簡體   English   中英

jQuery:'如果.change()和.keyup()'

[英]jQuery: 'if .change() AND .keyup()'

我想知道是否有一種簡單的方法來檢查是否存在引起更改的keyUp事件? 我知道可以綁定兩個事件:

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

上面的代碼將在觸發keyup或change事件時被觸發,但是有一種優雅的說法是“導致更改的 keyup事件”嗎?

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

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

    }

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

我想到的最簡單的方法是將元素的當前值存儲在內存中,並檢查keyup回調中該值是否不同。 var oldValue = $('#my-element')。val()

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

如果元素是輸入類型,我建議您使用輸入事件。

$("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();
     }
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM