Javascript 取消选择表单输入并在提交前等待函数

Javascript 取消选择表单输入并在提交前等待函数,javascript,jquery,forms,submit,infinite-loop,Javascript,Jquery,Forms,Submit,Infinite Loop,我有一个带有输入字段的表单,用户在其中输入唯一标识符。然后,我有一些jQuery代码,当用户离开输入字段(blur)时,这些代码就会出来,获取关于部件的详细信息,并填充页面上的一些字段。问题是,如果用户在移出输入字段之前单击submit按钮,jQuery代码就永远没有机会加载数据并填充必要的字段。做这件事最好的方法是什么?我考虑过可能将焦点设置为body,然后创建一个无限循环,不断检查页面,直到所有应该填充的字段都被填充,但我觉得某种基于事件的解决方案比不可预测的无限循环更好。有什么想法吗?给表

我有一个带有输入字段的表单,用户在其中输入唯一标识符。然后,我有一些jQuery代码,当用户离开输入字段(blur)时,这些代码就会出来,获取关于部件的详细信息,并填充页面上的一些字段。问题是,如果用户在移出输入字段之前单击submit按钮,jQuery代码就永远没有机会加载数据并填充必要的字段。做这件事最好的方法是什么?我考虑过可能将焦点设置为body,然后创建一个无限循环,不断检查页面,直到所有应该填充的字段都被填充,但我觉得某种基于事件的解决方案比不可预测的无限循环更好。有什么想法吗?

给表单一个
onsubmit
事件

除非正确填充了所有表单字段,否则让该事件返回
false

在:

这将阻止表单提交,直到一切就绪


禁用JavaScript时,阻塞将不起作用,但鉴于您正在使用Ajax获取正确的字段,这可能无关紧要。

给表单一个
onsubmit
事件

除非正确填充了所有表单字段,否则让该事件返回
false

在:

这将阻止表单提交,直到一切就绪


在禁用JavaScript的情况下,阻止将不起作用,但如果您使用Ajax获取正确的字段,这可能无关紧要。

我猜您是在模糊函数中调用Ajax?
您是否可以禁用提交按钮(页面加载或模糊),然后在ajax回调中启用它?

我猜您正在模糊函数中进行ajax调用?
您是否可以禁用提交按钮(页面加载或模糊),然后在ajax回调中启用它?

这是一种简单的解决方案。我考虑过这样做,但希望有一个稍微简化的解决方案,用户不必再次单击“提交”按钮。@BLCARMADILO easy:让我的函数在不满足条件时从上面设置一个标志
submitwhenmable=true
。让Ajax成功回调检查该标志,如果该标志设置为true,则执行编程提交:
$(“#formname”).submit()永远不要在JS中使用无限循环,它们会使用户的浏览器崩溃。但是,延迟提交可能会导致混乱,因为用户习惯于在单击按钮时看到某些浏览器活动(跳转启动、页面更改…)。从这个角度来看,我不确定这是否是一个好主意,但请尝试一下。这是一种简单的解决方案。我考虑过这样做,但希望有一个稍微简化的解决方案,用户不必再次单击“提交”按钮。@BLCARMADILO easy:让我的函数在不满足条件时从上面设置一个标志
submitwhenmable=true
。让Ajax成功回调检查该标志,如果该标志设置为true,则执行编程提交:
$(“#formname”).submit()永远不要在JS中使用无限循环,它们会使用户的浏览器崩溃。但是,延迟提交可能会导致混乱,因为用户习惯于在单击按钮时看到某些浏览器活动(跳转启动、页面更改…)。从这个角度来看,我不确定这是否是一个好主意,但请尝试一下。
$("#formname").submit(function()
 { if (condition_not_met) return false; });