我不确定如何正确管理输入html标签的快速输入。
基本上我有两个这样的检查,它会生成很多输入事件。
特别是当用户输入0.045时。它给出5个事件。
我想摆脱它们,并发送最后一个值0.045,然后通过AJAX发送到数据库。
我使用某种计时器或其他工具吗? (如果可以的话,当然可以。)
谢谢!
$(".myCLass").on('change keyup paste', function (event) {
if (event.which == 45 || event.which == 189) {
event.preventDefault();
}
UpdateValue(this);
});
$(".myCLass").keydown(function (e) {
// Allow: backspace, delete, tab, escape, enter and ./,
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, @Model.NumberDecimalSeparatorHtmlCode]) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
UpdateValue(this);
});
最佳答案
您必须将timeout与clearTimeout.一起使用
像这样:
var timeoutID;
$(".myCLass").keydown(function(e){
//do any checks
//clearTimeout
if(typeof timeoutID == "number") {
window.clearTimeout(timeoutID);
delete timeoutID;
}
var element = this;
timeoutID = window.setTimeout(function (e) {
UpdateValue(element);
}, 1000);
});
这将清除并设置每次按键按下时的超时时间为一秒钟。使用keyup函数可以完成相同的操作。