Javascript jQuery-迭代事件处理程序

Javascript jQuery-迭代事件处理程序,javascript,jquery,Javascript,Jquery,我在.submit处理程序中遇到了一个奇怪的问题 function validateOnSubmit() { //sacar el rojo de textfield de producto if (currentRestrictions == null) { //debe seleccionar un producto $("#invalidProductDialog").dialog("open"); return false;

我在
.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);
此(this?)代码的问题在于,如果它被取消(即通过到达
返回false
语句),并且表单未提交,则下次通知表单提交时,此处理程序将执行,但即使未到达
返回false
语句,也不会提交

我以前从未遇到过这种情况,我不希望您能找到解决方案(因为涉及大量代码)。然而,由于我使用的是一个框架,其中包含了一些样板文件,我问:


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

调用
submit
超出了您的功能范围

好吧,那么


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

Q:是否有一种方法可以迭代(调试)整个.submit处理程序列表

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

来源

  • 调试器
  • 这里有一个链接来解释

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

    假设您的对象是:
    $(“一个选择器”)

    您可以使用
    $。\u数据($(“aSelector”)[0],“events”)
    获取处理程序,该数据返回以下格式的字典:{handlerName:handlerList},即
    handlerList
    具有实际处理程序的
    函数
    属性的处理程序对象列表


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

    我不明白这有什么区别。提交调用是为了调用处理程序,如果我在处理程序中添加了,那么它永远不会被称为xD。true。。。我没有注意到它与您需要调用的功能相同,所以您的问题不是代码出了什么问题,而是如何确定它是否是绑定到元素的唯一提交事件,对吗?你可以检查其他绑定jQuery的事件,但是你不能检查由jQuery以外的东西绑定的事件。是的,这是我的问题。我想没有人能帮我,因为这是一个巨大的代码,我不能在这里发布。我有另一个建议来帮你调试它,但它根本不能回答您的问题,因为它采用了不同的路径,只是为了确保这个特定函数在有效时正确返回undefined。是您需要显式地执行ajax调用,还是表单操作设置正确?基本上,它是一个函数代理,在函数执行时记录有关函数的所有重要信息。您可以使用它来确认它实际上返回的是未定义的。否则,我建议使用Visual Event bookmarklet检查绑定事件。解释列出处理程序和使用调试器与我(至少)删除downvote.UndownVote之间的关系。这让我可以迭代jQuery处理程序?还是显示本机处理程序?请记住,本机处理程序不是用jQuery分配的处理程序,而是内部处理程序,它循环通过一种列表或链来保存我需要的实际处理程序。那个窗格是否显示了处理程序列表?(例如,分配给.submit事件的所有jquery处理程序)