2012-02-09 73 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

相关问题