jquery keyup错过了一次移位+&燃气轮机;如果I';我走得很快

jquery keyup错过了一次移位+&燃气轮机;如果I';我走得很快,jquery,Jquery,每当我键入>,follow jquery代码就会将输入元素的值移到输出元素上: $(document).ready(function() { var input = $("#input"); var output = $('output[name="output"]')[0]; input.keyup(function(event) { if (event.which == 190 && event.shiftKey == true) {// 190 = ke

每当我键入>,follow jquery代码就会将输入元素的值移到输出元素上:

$(document).ready(function() {
  var input = $("#input");
  var output = $('output[name="output"]')[0];
  input.keyup(function(event) {
    if (event.which == 190 && event.shiftKey == true) {// 190 = key code
      output.value = input.val();
    }
  });
});

但是,如果我真的很快,事件处理程序会错过一个>或两个,即使它在输入框中被正确捕获。我的代码中有缺陷吗?

我实际上无法重现您的确切错误,但我感觉您看到的是输入'>'字符与事件处理程序执行时间之间的延迟。我使用了两个输入框,type=“text”,以及以下JS代码:

$(document).ready(function() {
    var input = $("#input"),
        output = $('#output');
    input.keyup(function(event) {
        if (event.which == 190 && event.shiftKey == true) {// 190 = key code
            output.val(input.val());
        }
    });
});
当我快速输入字符时,有时会看到输出框得到最后一个'>'字符加上几个额外的击键。击键甚至可以是删除最后一个'>'的退格

在我看来,您不是简单地拉入input.val(),而是希望使用如下方式拉入输入值直到最后一个'>'字符:

input.keyup(function(event) {
    if (event.which == 190 && event.shiftKey == true) {// 190 = key code
        var val = input.val(),
            lastIndex = val.lastIndexOf('>');
        output.val(val.substr(0, lastIndex+1));
    }
});
这里有一些关于lastIndexOf的文档,其中包括一个针对本机没有它的浏览器的解决方案:

我实际上无法重现您的确切错误,但我感觉您看到的是输入'>'字符与事件处理程序执行时间之间的延迟。我使用了两个输入框,type=“text”,以及以下JS代码:

$(document).ready(function() {
    var input = $("#input"),
        output = $('#output');
    input.keyup(function(event) {
        if (event.which == 190 && event.shiftKey == true) {// 190 = key code
            output.val(input.val());
        }
    });
});
当我快速输入字符时,有时会看到输出框得到最后一个'>'字符加上几个额外的击键。击键甚至可以是删除最后一个'>'的退格

在我看来,您不是简单地拉入input.val(),而是希望使用如下方式拉入输入值直到最后一个'>'字符:

input.keyup(function(event) {
    if (event.which == 190 && event.shiftKey == true) {// 190 = key code
        var val = input.val(),
            lastIndex = val.lastIndexOf('>');
        output.val(val.substr(0, lastIndex+1));
    }
});
这里有一些关于lastIndexOf的文档,其中包括一个针对本机没有它的浏览器的解决方案:

Hmmm,没有看到它。特定于浏览器?奇怪。。。我在Chrome上也有同样的行为。IE9甚至不起作用。根据en.wikipedia.org/wiki/Comparison\u of_layout\u engines\u(HTML5),IE9不支持输出标签。在IE9上得到了它。我仍然可以使用两个输入框和
output.val(input.val())复制相同的“遗漏”行为嗯,没有看到它。特定于浏览器?奇怪。。。我在Chrome上也有同样的行为。IE9甚至不起作用。根据en.wikipedia.org/wiki/Comparison\u of_layout\u engines\u(HTML5),IE9不支持输出标签。在IE9上得到了它。我仍然可以使用两个输入框和
output.val(input.val())复制相同的“遗漏”行为