jQuery - 迭代事件处理程序

时间:2014-05-09 14:07:39

标签: javascript jquery

我遇到了.submit处理程序的奇怪问题。

function validateOnSubmit() {
    //sacar el rojo de textfield de producto
    if (currentRestrictions == null) {
        //debe seleccionar un producto
        $("#invalidProductDialog").dialog("open");
        return false;
    } else if (!currentRestrictions.allows($("#largo").val(), $("#ancho").val(), $("#calibre").val())) {
        //hay un error de validacion
        $("#invalidDimensionsDialog").dialog("open");
        return false;
    }
}
...
$("#aForm").submit(validateOnSubmit);

这个(这个?)代码的问题是,如果它被取消(即通过达到return false语句)并且表单未提交,则下次告知表单被提交时,此处理程序将即使没有达到return false语句,也会执行但不会提交。

以前从未发生过这种事情我不指望你找到这个解决方案(因为涉及到很多代码)。但是,由于我正在使用一个框架,我会问一些样板:

:有没有办法可以通过.submit处理程序列表进行迭代(调试)?

3 个答案:

答案 0 :(得分:0)

submit来电不属于您的职能......

好的,然后......

是否只需要在提交函数结束时对服务器进行ajax调用?

答案 1 :(得分:0)

如何调试 - 它对我有用并为实际问题提供资金! - 通过事件处理程序列表(警告:在版本>中测试= 1.8;我认为更低版本使用不同的方法):

说出你的对象是:$("aSelector")

您可以使用$._data($("aSelector")[0], "events")获取处理程序,它以以下格式返回字典:{handlerName:handlerList},handlerList一个具有function属性的处理程序对象列表实际的处理程序。

在这样的附加处理程序中有一个错误(在这个问题的影响下根本不重要,因为最后问题是如何调试处理程序)。

答案 2 :(得分:-1)

问:有没有办法可以通过.submit处理程序列表进行迭代(调试)?

答:您可以使用Firefox进行此操作。在firefox调试器选项卡中,查看事件窗格。在那里,您将找到页面上代码绑定的所有事件。

<强>来源:

  1. 调试器Events pane
  2. 以下是解释how to use the firefox debugger ...
  3. 的链接