如果在jQuery中调用.submit(),是否有重写.blur()的方法?

如果在jQuery中调用.submit(),是否有重写.blur()的方法?,jquery,jquery-ui,focus,submit,blur,Jquery,Jquery Ui,Focus,Submit,Blur,我正在为网站的CMS编写自定义代码。当用户单击submit按钮(使用jQuery UI创建)时,它会调用按钮上的click事件,该事件又会调用submit事件,提交表单 该表单还检查特定字段是否有文本,并将显示错误消息并停用提交按钮,直到问题得到解决。为此,我目前使用.focus(),它内部有一个.blur()函数,用于检查错误是否已修复,如果已修复,则删除通知(如果没有其他错误,则重新激活按钮) 现在,我遇到的问题是,如果用户在任何时候编辑要检查的某个字段,如果他们没有单击该字段并尝试提交表单

我正在为网站的CMS编写自定义代码。当用户单击submit按钮(使用jQuery UI创建)时,它会调用按钮上的click事件,该事件又会调用submit事件,提交表单

该表单还检查特定字段是否有文本,并将显示错误消息并停用提交按钮,直到问题得到解决。为此,我目前使用.focus(),它内部有一个.blur()函数,用于检查错误是否已修复,如果已修复,则删除通知(如果没有其他错误,则重新激活按钮)

现在,我遇到的问题是,如果用户在任何时候编辑要检查的某个字段,如果他们没有单击该字段并尝试提交表单数据,则.blur()函数将控制该字段(它应该通过其编码方式进行控制),因此需要再次单击以提交表单数据

有没有办法让jQuery中的.submit()优先于.blur(),这样就不会出现这个问题(现在我可以简单地告诉使用它的用户不要执行导致这个问题的步骤)


(如果你们需要代码,我可以尝试在这里发布一些代码。)

尝试停止onblur事件的事件传播:

$(form).submit(function(){
  blur.stopPropagation()
...
});

请参见此处:

在昨晚仔细考虑之后,我意识到,如果在调用blur()之前快速检查错误是否可见,它将修复我的问题(进行了快速测试,结果似乎已修复)


不过,感谢您对事件传播停止的建议,我必须记住这一点。

我尝试删除输入字段上的模糊事件,并使用表单验证函数的onFocusout事件。这个解决方案对我有效

另一个最佳解决方案是设置计时器,在触发按钮单击事件之前延迟模糊事件操作

//计时器的命名空间 var setTimer={ 计时器:空 }

        $('input,select').blur(function () {
            setTimer.timer = setTimeout(function () {
               functionCall();
            }, 1000);
        });

        $('input,select').focus(function () {
            setTimer.timer = setTimeout(function () {
                functionCall();
            }, 1000);
        });

        $("#btn").click(function () {
            clearTimeout(setTimer.timer);
            functionCall();
        });   

请务必包含代码,从你的问题中不清楚你的模糊是怎么阻止提交的。我有完全相同的问题