jQuery的val()方法为keypress事件返回的字符太少

Man*_*j G 2 javascript jquery keypress javascript-events

在我的表单中,我添加了一个文本框($("#seltxt"))和一个内部有文本的div.当我选择div文本进入文本框时,这工作正常.现在我在按键事件中的#seltxt中添加了功能键按压我将文本框文本复制到div.但它减少了一个字符.

例:

当我点击div时,div有文字"manojgangwar","manojgangwar"复制到#seltxt.现在假设我在文本框中写了字符"manojgangwar123"然后在div中它只会出现"manojgangwar12"

下面是捕获keypress事件的jQuery

 //function to set text to div

$("#seltxt").keypress( function(event) {
   $('#' + objid).text($("input#seltxt").val());
});
Run Code Online (Sandbox Code Playgroud)

Rob*_*b W 6

在发生默认行为之前按下某个键时会触发按键事件.这允许脚本通过该event.preventDefault()方法取消默认行为(例如,填充输入字段).

keyup如果需要在输入值更改时触发的事件,请使用该事件.

此外,既然$("input#selText")指向自己,你也可以使用$(this).val().进一步的优化将包括使用this.value,这是普遍支持的.

$("#seltxt").keyup( function(event) {
   $('#' + objid).text(this.value);
});
Run Code Online (Sandbox Code Playgroud)

关键事件的最后说明

  • keydown - 按下一个键后立即触发一次.可用于防止第一个默认事件.
  • keypress - 按下按键时可能多次触发.可用于防止默认行为(keydown仅触发一次,如果按住键,将发生默认行为,除非您定义keypress事件)
  • keyup - 释放钥匙后触发.使用event.preventDefault()无法阻止键盘输入修改文本.