Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript输入和输出之间的一(按键)事件延迟_Javascript_Jquery - Fatal编程技术网

javascript输入和输出之间的一(按键)事件延迟

javascript输入和输出之间的一(按键)事件延迟,javascript,jquery,Javascript,Jquery,下面的代码片段使用简单的javaScript和jQuery复制网页中的输入文本 但是,我想知道,为什么在输入和输出之间存在一个字符(或者更准确地说,一次击键)延迟 例如: 我输入“abcde” 输出为“abcd” 但是,如果我按Insert键,最终的“e”会打印出来 我的代码: 布拉布拉 $(“#myTextInput”).keypress(函数(){ var theText=$(“#myTextInput”).val(); $(“#myTextOutput”).html(文本); })

下面的代码片段使用简单的javaScript和jQuery复制网页中的输入文本

但是,我想知道,为什么在输入和输出之间存在一个字符(或者更准确地说,一次击键)延迟

例如:

  • 我输入“abcde”

  • 输出为“abcd”

  • 但是,如果我按Insert键,最终的“e”会打印出来

  • 我的代码:

    
    

    布拉布拉

    $(“#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事件,而不是带有超时的按键。那太傻了。