2012-02-09 72 views
0

我有一個表單,我正在處理這個需要在輸入失去焦點時觸發多個事件,即blur事件被解僱。我無法管理各種事件處理程序需要對此做出迴應。在jQuery中管理多個事件處理程序

每個表單輸入標籤都需要在模糊時發生各種事情。

  1. 各種自動格式化程序,如確保名稱以大寫字母開頭或根據複選框顯示錶單的區域。
  2. jQuery驗證。
  3. 後驗證功能,如Ajax調用

到目前爲止,我已經拿出了最好的方法是依靠事件冒泡系統。因此,確保來自點1的所有事件都使用jQuery.on()附加到比驗證規則更深入DOM的元素。 Jquery驗證將事件監聽器附加到表單元素。

惠斯特這個工程它有一些問題。它適用於我有更多事情時可能會成爲問題的3類事件。

是否有人使用jQuery來使這種事情更簡單的系統的發佈者/訂閱者排序?

+0

我通常只對每個元素使用一個事件,並在該事件中執行所有不同的方法。 – 2012-02-09 16:57:13

+2

請發佈您的代碼。 – 2012-02-09 18:15:12

回答

0

你看過自定義事件並解僱了這些?

例如,你可以創建一個自定義「getMeMore」事件的模糊代碼完成後:

$(document).on('blur', '.myInputClass', function(){ 
    // do stuff for blur here 
    $(this).trigger('getMeMore');//now trigger my event 
}); 
$(document).on('getMeMore','.myInputClass',function(){ 
    //do my ajax to get me more here 
}); 

編輯:基於評論:

在選擇有該文件僅僅是一個錨現場活動的事件。請參閱此示例http://jsfiddle.net/MarkSchultheiss/qM2Mv/,其中我基於條件在另一個事件中激發自定義事件。觀看數字(雙擊的位置)以查看其他事件何時觸發。我知道這是解釋,但希望它會給你一些工作。我在我的代碼中這樣做,這樣我就可以根據可能存在或不存在的其他條件來處理「何時」事件觸發一個事件觸發。這允許將事件觸發器從事件管理中分離出來,這是重點。注意我觸發了來自不同地方的一些自定義事件。 (複選框值,並基於文本條目的長度)

+0

我確實想過這樣做,但認爲這只是改變了問題。這是因爲您仍然需要從某個地方觸發自定義事件,這裏您是從文檔級別進行的。如果發生這種情況,我將無法在此後再開槍。這種方法依靠事件的冒泡來改變執行順序。 – 2012-02-10 08:37:48

+0

@MattBate - 看我添加的例子 – 2012-02-10 14:05:16

相關問題