In Vue.js, how can I get a keypress event to get the latest version of the input?
In the following code:
https://codepen.io/anon/pen/WYJopq
I monitor key presses and try to clone the input into another input as follows:
[![methods: {
clone: function() {
this.mirror = this.original;
}
}]
But the cloned input is always one keystroke behind:
https://i.stack.imgur.com/y2uCA.gif
How do I update my code so that the cloned input exactly matches the original input?
(Note: I know for this simple example, there's an idiomatic Vue.js way to do things, but I'm specifically interested in doing this via keystroke monitoring)
vue.js
add a comment |
In the following code:
https://codepen.io/anon/pen/WYJopq
I monitor key presses and try to clone the input into another input as follows:
[![methods: {
clone: function() {
this.mirror = this.original;
}
}]
But the cloned input is always one keystroke behind:
https://i.stack.imgur.com/y2uCA.gif
How do I update my code so that the cloned input exactly matches the original input?
(Note: I know for this simple example, there's an idiomatic Vue.js way to do things, but I'm specifically interested in doing this via keystroke monitoring)
vue.js
1
Have you tried usingkeyup
instead ofkeypress
?
– Omari Celestine
Nov 23 '18 at 21:31
is there a reason you are using keypress instead of keyup?
– Katie.Sun
Nov 23 '18 at 21:33
add a comment |
In the following code:
https://codepen.io/anon/pen/WYJopq
I monitor key presses and try to clone the input into another input as follows:
[![methods: {
clone: function() {
this.mirror = this.original;
}
}]
But the cloned input is always one keystroke behind:
https://i.stack.imgur.com/y2uCA.gif
How do I update my code so that the cloned input exactly matches the original input?
(Note: I know for this simple example, there's an idiomatic Vue.js way to do things, but I'm specifically interested in doing this via keystroke monitoring)
vue.js
In the following code:
https://codepen.io/anon/pen/WYJopq
I monitor key presses and try to clone the input into another input as follows:
[![methods: {
clone: function() {
this.mirror = this.original;
}
}]
But the cloned input is always one keystroke behind:
https://i.stack.imgur.com/y2uCA.gif
How do I update my code so that the cloned input exactly matches the original input?
(Note: I know for this simple example, there's an idiomatic Vue.js way to do things, but I'm specifically interested in doing this via keystroke monitoring)
vue.js
vue.js
asked Nov 23 '18 at 21:24
MaryMary
17719
17719
1
Have you tried usingkeyup
instead ofkeypress
?
– Omari Celestine
Nov 23 '18 at 21:31
is there a reason you are using keypress instead of keyup?
– Katie.Sun
Nov 23 '18 at 21:33
add a comment |
1
Have you tried usingkeyup
instead ofkeypress
?
– Omari Celestine
Nov 23 '18 at 21:31
is there a reason you are using keypress instead of keyup?
– Katie.Sun
Nov 23 '18 at 21:33
1
1
Have you tried using
keyup
instead of keypress
?– Omari Celestine
Nov 23 '18 at 21:31
Have you tried using
keyup
instead of keypress
?– Omari Celestine
Nov 23 '18 at 21:31
is there a reason you are using keypress instead of keyup?
– Katie.Sun
Nov 23 '18 at 21:33
is there a reason you are using keypress instead of keyup?
– Katie.Sun
Nov 23 '18 at 21:33
add a comment |
1 Answer
1
active
oldest
votes
With a keyboard, we have three events fired in the following order:
keydown
- fired before character inserted
keypress
- fired when a character is getting inserted
keyup
- fired when character is already inserted
In this scenario, if you need input with updated characters, you should use keyup
event which is after the character is inserted into the input.
Having said this, you should probably use @input
event as relying on the keyboard means you are not thinking about other ways via which text can be inserted into the input box. For example, copy-paste or using an on-screen keyboard:
<input type="text" v-model="original" @input="clone()" />
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53453085%2fin-vue-js-how-can-i-get-a-keypress-event-to-get-the-latest-version-of-the-input%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
With a keyboard, we have three events fired in the following order:
keydown
- fired before character inserted
keypress
- fired when a character is getting inserted
keyup
- fired when character is already inserted
In this scenario, if you need input with updated characters, you should use keyup
event which is after the character is inserted into the input.
Having said this, you should probably use @input
event as relying on the keyboard means you are not thinking about other ways via which text can be inserted into the input box. For example, copy-paste or using an on-screen keyboard:
<input type="text" v-model="original" @input="clone()" />
add a comment |
With a keyboard, we have three events fired in the following order:
keydown
- fired before character inserted
keypress
- fired when a character is getting inserted
keyup
- fired when character is already inserted
In this scenario, if you need input with updated characters, you should use keyup
event which is after the character is inserted into the input.
Having said this, you should probably use @input
event as relying on the keyboard means you are not thinking about other ways via which text can be inserted into the input box. For example, copy-paste or using an on-screen keyboard:
<input type="text" v-model="original" @input="clone()" />
add a comment |
With a keyboard, we have three events fired in the following order:
keydown
- fired before character inserted
keypress
- fired when a character is getting inserted
keyup
- fired when character is already inserted
In this scenario, if you need input with updated characters, you should use keyup
event which is after the character is inserted into the input.
Having said this, you should probably use @input
event as relying on the keyboard means you are not thinking about other ways via which text can be inserted into the input box. For example, copy-paste or using an on-screen keyboard:
<input type="text" v-model="original" @input="clone()" />
With a keyboard, we have three events fired in the following order:
keydown
- fired before character inserted
keypress
- fired when a character is getting inserted
keyup
- fired when character is already inserted
In this scenario, if you need input with updated characters, you should use keyup
event which is after the character is inserted into the input.
Having said this, you should probably use @input
event as relying on the keyboard means you are not thinking about other ways via which text can be inserted into the input box. For example, copy-paste or using an on-screen keyboard:
<input type="text" v-model="original" @input="clone()" />
answered Nov 24 '18 at 6:11
Harshal PatilHarshal Patil
2,90611243
2,90611243
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53453085%2fin-vue-js-how-can-i-get-a-keypress-event-to-get-the-latest-version-of-the-input%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Have you tried using
keyup
instead ofkeypress
?– Omari Celestine
Nov 23 '18 at 21:31
is there a reason you are using keypress instead of keyup?
– Katie.Sun
Nov 23 '18 at 21:33