2013-08-02 30 views
2

我負責用自定義函數替換Javascript prompt調用,該自定義函數使用花哨的Javascript激活的模式對話框。使用模式重新實現Javascript提示()對話框

該函數被調用一次,並期望返回一個字符串,並帶有來自用戶的輸入。我無法控制函數的調用方式(它是一個外部函數庫)。

使模態和輸入很容易。在用戶單擊提交/確定按鈕後,如何將輸入返回給我的自定義提示功能的調用者?

jQuery很好。

回答

3

prompt()的瀏覽器實現以不能用頁面上運行的用戶級JavaScript進行復制的方式實現。你必須使用回調函數。如果可能的話,已經有一個你應該使用的現成的解決方案。

我想說的是,你的代碼的用戶不能有這樣的:

var result = customPrompt(...); 

相反,他們必須在此線的東西:

customPrompt({ 
    ... 

    ok: function() { 
     //when user clicked ok 
    }, 

    cancel: function() { 
     //when user clicked cancel 
    } 

}); 
//Code continues to run here and doesn't wait for the user to click ok or cancel 
0

這是你如何能得到用戶輸入與您的模式啓動器相同的功能,以便您可以處理它。

<input type="text" id="user-input" /> 
<a href="#" onClick="handlePrompt(false)">OK</a> 

function handlePrompt(launchModal){ 
    if(launchModal){ 
     // Code to Launch Modal 
    }else{ 
     var userInput = $("#user-input").val(); 
     // Do what you want with the input. 
    } 
} 
+0

問題是我需要創建我的模態提示並返回輸入到一個函數的調用者 - 我沒有「回調」調用。 –

+0

編輯,也許這會幫助你。 –

+0

我需要輸入來自模態。這裏是路徑:我寫的函數被外部​​庫調用。外部庫期望我的函數返回一個字符串。該字符串需要由用戶提供 - 我打算將輸入框放在*模式對話框中。 –