2017-02-09 49 views
0

是否有可能在JS中阻止某些动作,直到某些Ajax调用返回“OK”。 somecall是ajax调用。阻止提交,直到一些Ajax动作完成

一些简单的pseucode:

<form> 
    <button type="submit" name="hey" onstart="doSomeCall(); while (1) { if (isCallDone()) {break;} }" > </input> 
</form> 

在现实中,它不是一个按钮,但类似的东西。

EDIT1

我改变伪代码,以更好地说明情况。所以我需要在onstart中阻止这个组件。在JS中可能吗?在onstart运行javascript代码。

<form> 
    <p:tree> 
    <p:ajax event="select" onclick="doSomeCall(); while (1) { if (isCallDone()) {break;} }" /> 
    </p:tree> 
</form> 
+0

你声明一个'let'函数被调用一次?在''if''语句中移动它。 'if(isCallDone()){break; }''。 – Crowes

+0

感谢您使伪代码更好。 – Tony

回答

0

如果您已经使用jQuery,请对.off() 看看你开始你的冗长的操作前,先删除按钮单击处理

$the_button.off("click"); 

当Ajax是解决增加点击返回

$the_button.click(your_handler_function); 
+0

当你可以防止提交发生时,为什么要这么多与DOM的交互? – kbariotis

+0

@kbariotis使用选择器没有任何问题,特别是如果您使用id或已经选择元素并将其存储在私有变量中。在作者的情况下,你不需要任何速度,因为我们在这里工作的时间已经耗费了一些时间。再往下,我只是抛出另一个选项,其实在生活时间上非常清楚。开发人员可以将其“关闭”到他需要的地方,并在必须完成的时间返回“点击”,基本上完全控制正在发生的事情;最后这在内部使用大量代码很方便。 –

相关问题