2017-02-09 111 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或已經選擇元素並將其存儲在私有變量中。在作者的情況下,你不需要任何速度,因爲我們在這裏工作的時間已經耗費了一些時間。再往下,我只是拋出另一個選項,其實在生活時間上非常清楚。開發人員可以將其「關閉」到他需要的地方,並在必須完成的時間返回「點擊」,基本上完全控制正在發生的事情;最後這在內部使用大量代碼很方便。 –

相關問題