每当我输入>时,跟随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();
}
});
});
但是,如果我真的要快,那么事件处理程序会错过>或者两个,即使它在输入框中正确捕获。我的代码中有缺陷吗?
答案 0 :(得分:0)
我实际上无法重现您的确切错误,但我感觉您所看到的是您输入'>'之间的滞后时间。字符和事件处理程序执行的时间。我正在使用2个输入框,类型=“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的一些文档,包括一个没有本机浏览器的解决方法: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf