new Vue({
el: "#app",
data: {
keyDown: { key:null, val: null, model: null, modelCopy: null },
keyUp: { key:null, val: null, model: null, modelCopy: null },
change: { val: null, model: null, modelCopy: null },
input: { val: null, model: null, modelCopy: null },
},
methods: {
keyDownFun: function(event){ // type of event: KeyboardEvent
console.log(event);
this.keyDown.key = event.key; // or event.keyCode
this.keyDown.val = event.target.value; // html current input value
this.keyDown.modelCopy = this.keyDown.model; // copy of model value at the moment on event handling
},
keyUpFun: function(event){ // type of event: KeyboardEvent
console.log(event);
this.keyUp.key = event.key; // or event.keyCode
this.keyUp.val = event.target.value; // html current input value
this.keyUp.modelCopy = this.keyUp.model; // copy of model value at the moment on event handling
},
changeFun: function(event) { // type of event: Event
console.log(event);
this.change.val = event.target.value; // html current input value
this.change.modelCopy = this.change.model; // copy of model value at the moment on event handling
},
inputFun: function(event) { // type of event: Event
console.log(event);
this.input.val = event.target.value; // html current input value
this.input.modelCopy = this.input.model; // copy of model value at the moment on event handling
}
}
})
div {
margin-top: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
Type in fields below (to see events details open browser console)
<div id="app">
<div><input type="text" @keyDown="keyDownFun" v-model="keyDown.model"><br> @keyDown (note: model is different than value and modelCopy)<br> key:{{keyDown.key}}<br> value: {{ keyDown.val }}<br> modelCopy: {{keyDown.modelCopy}}<br> model: {{keyDown.model}}</div>
<div><input type="text" @keyUp="keyUpFun" v-model="keyUp.model"><br> @keyUp (note: model change value before event occure) <br> key:{{keyUp.key}}<br> value: {{ keyUp.val }}<br> modelCopy: {{keyUp.modelCopy}}<br> model: {{keyUp.model}}</div>
<div><input type="text" @change="changeFun" v-model="change.model"><br> @change (occures on enter key or focus change (tab, outside mouse click) etc.)<br> value: {{ change.val }}<br> modelCopy: {{change.modelCopy}}<br> model: {{change.model}}</div>
<div><input type="text" @input="inputFun" v-model="input.model"><br> @input<br> value: {{ input.val }}<br> modelCopy: {{input.modelCopy}}<br> model: {{input.model}}</div>
</div>