如何检测快速.change()事件?

时间:2018-01-15 06:46:05

标签: javascript jquery

我有以下内容:

$(document).ready(function () {
    var timer;    
    $('.coInput').on('change', function () {
        var itemID = $(this).attr('data-id');
        var rate = $(this).val();
        var $this = $(this);
        $this.prop('disabled', true);
        clearTimeout(timer);
        timer = setTimeout(function() {
            $.ajax({
                url: '/update_crackout/',
                type: 'POST',
                dataType: 'json',
                data: {
                    'object': itemID,
                    'rate': rate
                },
                success: function(data) {
                    $('#weight-'+itemID).html(data.weight);
                    $('#price-'+itemID).html(data.price);
                    $this.prop('disabled', false);
                }
            })
        }, 500)
    })
});

它似乎并不一致。它指向一个数字领域。当我使用向上/向下箭头更改值时,它会在第一次工作,然后仅在此之后间歇性地工作。是什么导致.change()错过了我的一些变化?

我尝试删除除了一个console.log()之外的所有内容,它也做了同样的事情。

1 个答案:

答案 0 :(得分:1)

根据MDN

  

针对>>> type(1) <type 'int'> >>> >>> isinstance(1, int) True >>> <input><select>触发了更改事件   元素的值更改时的元素   用户。 与输入事件不同,更改事件不一定   每次更改元素值时触发。

     

(强调我的)

因此,如果您需要在每次更改时触发事件,请使用&#34;输入&#34;事件

这是一个用于显示其工作状态的代码:https://codepen.io/Nisargshah02/pen/BJPYoY

&#13;
&#13;
<textarea>
&#13;
$("input").on("input", function(){
  console.log($(this).val());
});
&#13;
&#13;
&#13;