我不确定如何正确管理输入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);
        });

最佳答案

您必须将timeoutclearTimeout.一起使用

像这样:

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函数可以完成相同的操作。

10-08 04:35