jQuery:' if .change()AND .keyup()'

时间:2014-07-23 03:21:13

标签: javascript jquery

我想知道是否有一种简单的方法可以检查是否存在导致更改的keyUp事件?我知道可以绑定两个事件:

$("#my-element").bind("change keyup", function(e) {
    // code
})

当触发了键盘或更改事件时,会触发上面的代码,但有一种优雅的方式可以说“ keyup 事件导致更改”吗? / p>

3 个答案:

答案 0 :(得分:3)

$("#my-element").bind("keyup", function(e) {
    var val = $(this).val();

    //if value change
    if( $(this).data('last') != val ){

    }

    $(this).data('last',val);
})

答案 1 :(得分:1)

我想到的最简单的方法是将元素的当前值存储在内存中,并检查keyup回调中的值是否不同。     var oldValue = $('#my-element')。val()

$("#my-element").bind("keyup", function(e) {
    if($('#my-element').val() !== oldValue) { 
       // do something
       oldValue = $('#my-element').val();
    }
})

答案 2 :(得分:0)

如果元素是输入类型,我建议你使用输入事件。

$("input[name='inputname']").on("input", function () {
    console.log($(this).val());
});

否则,您可以通过绑定“keyup”事件来接近,并尝试确定按下的键是否更改了字段值。

$("input[name='inputname']").on("keyup", function (e) {
     if ($.inArray(e.keyCode, [8, 9, 13, 27, 46, 110, 190]) !== -1
         || (e.keyCode >= 35 && e.keyCode <= 39)) {
         return;
     } else {
         console.log(e.keyCode);
     }
     /* you might want to use prevnetDefault() for prevent default action when the evnet triggerd. 
      * (e.g. Below code ensures that it's a alphabet key.)
      */
     if ((e.keyCode < 65 || e.keyCode > 90) && (e.keyCode < 97 || e.keyCode > 122)) {
         e.preventDefault();
     }
 });