2014-05-09 105 views
0

我遇到一个.submit处理程序的奇怪问题。jQuery - 迭代事件处理程序

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声明IE)和形式不提交,下一次的形式被告知要提交,该处理器将问题即使在没有达到return false声明时执行BUT,它也不会被提交。

它从来没有发生过我和我不指望你找到这个(因为涉及大量的代码)的解决方案。然而,因为我使用的框架,把一些样板我问:

Q:有没有一种方法,我可以迭代(调试)通过.submit处理程序的列表?

+0

所以你的问题不是代码有什么问题,而是如何确定它是否是绑定到元素的唯一提交事件,是正确的?您可以检查其他jQuery绑定事件,但是您无法检查除jQuery以外的事件所绑定的事件。 –

+0

是的,这是我的问题。我认为没有人可以帮助我,因为这是一个庞大的代码,我不能在这里发布。 –

+0

我还有一些建议可以帮助你调试它,但它根本不能回答你的问题,因为它在不同的路线中,只是为了确保这个特定的函数在有效时正确地返回undefined。 –

回答

0

submit调用你的函数之外...

那好吧...

只需要在你提交函数的末尾做一个AJAX调用服务器是吗?

+0

我不明白是什么差异,使得 –

+0

.submit调用是craete处理程序,如果我在处理程序中添加,那么它永远不会被称为xD。 –

+0

true ...我没有注意到它是你需要调用的相同函数 – Xeltor

-1

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

- 答:你可以用这个Firefox。在Firefox调试器选项卡中,查看事件窗格。您可以在页面上找到所有由代码绑定的事件。

来源

  1. 调试Events pane
  2. 下面就来解释how to use the firefox debugger链接...
+0

解释列出处理程序和使用调试器之间的关系,以及我(至少)删除downvote。 –

+0

更新了我的回答 –

+0

未上诉。这让我遍历jQuery处理程序?或显示本地处理程序?请记住,本地处理程序不是使用jQuery分配的处理程序,而是内部处理程序,它通过一种列举或链接来持有我需要的实际处理程序。该窗格是否显示处理程序列表? (例如分配给.smit事件的所有jquery处理程序) –

0

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

说你的目标是:$("aSelector")。 {handlerName:handlerList},是handlerList其中有一个function财产具有实际的处理程序处理的对象的列表

您可以$._data($("aSelector")[0], "events"),它会返回在格式字典得到处理。

在这样的附加处理程序中有一个错误(这个问题的效果根本不重要,因为问题最终是关于如何调试处理程序)。