jQuery多個事件觸發相同的功能

有沒有辦法讓keyupkeypressblurchange事件在一行中調用相同的函數,仍是必須單獨執行? jquery

我遇到的問題是我須要使用數據庫查找驗證一些數據,而且但願確保在任何狀況下都不會錯過驗證,不管是鍵入仍是粘貼到框中。 數據庫


#1樓

從jQuery 1.7開始, .on()方法是將事件處理程序附加到文檔的首選方法。 對於早期版本, .bind()方法用於將事件處理程序直接附加到元素。 api

$(document).on('mouseover mouseout',".brand", function () {
  $(".star").toggleClass("hovered");
})

#2樓

我正在尋找一種方法來獲取事件類型,當jQuery一次監聽多個事件時,谷歌把我放在這裏。 函數

因此,對於那些感興趣的人, event.type是個人答案: this

$('#element').on('keyup keypress blur change', function(event) {
    alert(event.type); // keyup OR keypress OR blur OR change
});

jQuery doc中的更多信息。 spa


#3樓

您能夠使用bind方法將函數附加到多個事件。 只需傳遞事件名稱和處理函數,以下代碼所示: code

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});

另外一種選擇是使用jquery api的連接支持。 seo


#4樓

您能夠使用.on()將函數綁定到多個事件: 事件

$('#element').on('keyup keypress blur change', function(e) {
    // e.type is the type of event fired
});

或者只是將函數做爲參數傳遞給普通事件函數: element

var myFunction = function() {
   ...
}

$('#element')
    .keyup(myFunction)
    .keypress(myFunction)
    .blur(myFunction)
    .change(myFunction)

#5樓

若是您將相同的事件處理程序附加到多個事件,您常常遇到一次觸發多個事件的問題(例如,用戶在編輯後按Tab鍵; keydown,change和blur可能所有觸發)。

這聽起來像你真正想要的是這樣的:

$('#ValidatedInput').keydown(function(evt) {
  // If enter is pressed
  if (evt.keyCode === 13) {
    evt.preventDefault();

    // If changes have been made to the input's value, 
    //  blur() will result in a change event being fired.
    this.blur();
  }
});

$('#ValidatedInput').change(function(evt) {
  var valueToValidate = this.value;

  // Your validation callback/logic here.
});
相關文章
相關標籤/搜索