javascript输入和输出之间的一(按键)事件延迟
下面的代码片段使用简单的javaScript和jQuery复制网页中的输入文本 但是,我想知道,为什么在输入和输出之间存在一个字符(或者更准确地说,一次击键)延迟 例如:javascript输入和输出之间的一(按键)事件延迟,javascript,jquery,Javascript,Jquery,下面的代码片段使用简单的javaScript和jQuery复制网页中的输入文本 但是,我想知道,为什么在输入和输出之间存在一个字符(或者更准确地说,一次击键)延迟 例如: 我输入“abcde” 输出为“abcd” 但是,如果我按Insert键,最终的“e”会打印出来 我的代码: 布拉布拉 $(“#myTextInput”).keypress(函数(){ var theText=$(“#myTextInput”).val(); $(“#myTextOutput”).html(文本); })
布拉布拉
$(“#myTextInput”).keypress(函数(){
var theText=$(“#myTextInput”).val();
$(“#myTextOutput”).html(文本);
});
$(“html”)。单击(函数(事件){
var值=$(“#myTextInput”).val();
$(“#myTextOutput”).html(值);
});
在允许事件传播到已更新文本字段的位置之前,您正在获取该值。您可以添加一个无限小的延迟来获得完整值:
$("#myTextInput").keypress(function( ){
setTimeout(function() {
var value = $("#myTextInput").val();
$("#myTextOutput").html(value);
}, 0);
});
您在允许事件传播到文本字段已更新的位置之前获取该值。您可以添加一个无限小的延迟来获得完整值:
$("#myTextInput").keypress(function( ){
setTimeout(function() {
var value = $("#myTextInput").val();
$("#myTextOutput").html(value);
}, 0);
});
如果您想消除tat延迟。使用
向上键
或向下键
代替按键
:
$("#myTextInput").keyup(function( ){
var value = $("#myTextInput").val();
$("#myTextOutput").html(value);
});
如果您想消除tat延迟,下面是一个。使用
向上键
或向下键
代替按键
:
$("#myTextInput").keyup(function( ){
var value = $("#myTextInput").val();
$("#myTextOutput").html(value);
});
以下是最可能的原因是在更新输入字段的内容之前执行了
按键
事件处理程序。当您阅读内容时,您仍然阅读旧内容,而不是更新的内容
来自jQuery的:
注意:由于任何官方规范都没有涵盖keypress事件,因此使用它时遇到的实际行为可能因浏览器、浏览器版本和平台而异
使用keyup
解决了以下问题:
$(“#myTextInput”).keyup(函数(){
var theText=$(“#myTextInput”).val();
$(“#myTextOutput”).html(文本);
});
$(“html”)。单击(函数(事件){
var值=$(“#myTextInput”).val();
$(“#myTextOutput”).html(值);
});代码>
布拉布拉
最可能的原因是在更新输入字段的内容之前执行了按键事件处理程序。当您阅读内容时,您仍然阅读旧内容,而不是更新的内容
来自jQuery的:
注意:由于任何官方规范都没有涵盖keypress事件,因此使用它时遇到的实际行为可能因浏览器、浏览器版本和平台而异
使用keyup
解决了以下问题:
$(“#myTextInput”).keyup(函数(){
var theText=$(“#myTextInput”).val();
$(“#myTextOutput”).html(文本);
});
$(“html”)。单击(函数(事件){
var值=$(“#myTextInput”).val();
$(“#myTextOutput”).html(值);
});代码>
布拉布拉
keydown
与keypress
有相同的问题,至少在Chrome中是这样的:我在示例中使用keydup的原因是。我知道,只是指出了这一点,因为您建议在第二句话中使用keydown
。-)keydown
与keypress
有相同的问题,至少在Chrome中是这样的:我在示例中使用keyup的原因是。我知道,只是指出了这一点,因为您建议在第二句话中使用keydown
。:-)是的,很好,这似乎是以下解决方案中响应最快的解决方案:keyup/keydown/timeout您应该使用keyup事件,而不是带有超时的按键。这太傻了。是的,很好,这似乎是以下解决方案中响应最快的解决方案:keyup/keydown/timeout你应该使用keyup事件,而不是带有超时的按键。那太傻了。