1.创建js文件
import Vue from 'vue'
const focusDurations = {}
Vue.directive('focus-duration', {
inserted: function(el, binding) {
let inputDom
if (el) {
inputDom = el.children[0]
console.log(el.children[0])
}
focusDurations[binding.arg] = focusDurations[binding.arg] || []
inputDom.addEventListener('focus', function() {
this.focusStartTime = Date.now()
})
inputDom.addEventListener('blur', function() {
if (this.focusStartTime !== null) {
const duration = Date.now() - this.focusStartTime
focusDurations[binding.arg].push(duration)
focusDurations[binding.arg].join()
this.focusStartTime = null
}
})
},
unbind: function(el, binding) {
let inputDom
if (el) {
inputDom = el.children[0]
}
inputDom.removeEventListener('focus', focusDurations)
inputDom.removeEventListener('blur', focusDurations)
}
})
Vue.prototype.$exportFocusDurations = function() {
const result = {}
Object.keys(focusDurations).forEach(item => {
result[item] = focusDurations[item].join()
})
return result
}
2.在main.js引入
import './utils/customDirective'
3.在组件中使用
<el-form-item label="活动名称">
<el-input v-model="form.name" v-focus-duration:name />
</el-form-item>
<el-form-item label="活动形式">
<el-input v-model="form.desc" v-focus-duration:desc type="textarea" />
</el-form-item>
onSubmit() {
console.log(this.$exportFocusDurations())
{
"name": "1342,1057,576",
"desc": "806,334,276"
}
}