2016-10-11 44 views
-1

有什麼辦法可以阻止用戶關閉Javascript中給出的提示嗎?不允許提示被關閉

我試圖測試,如果變量是null,但似乎並沒有工作(或我無法弄清楚),因爲一旦關閉,我假設它沒有得到我的條件語句。有沒有辦法在提示信息中禁用close選項?

我想讓用戶在提示消息框中輸入響應。我主要是C#開發人員,並且正在學習JS。我不知道如何在JS中測試這個。原諒我有點糊塗。

任何幫助?謝謝大家的閱讀。


我的代碼:

var login = prompt("Who is this?"); 

if((login.toUpperCase()) !== "password" || (login === null)) { 
alert("BEGIN SHUTDOWN","ERROR"); 
window.close(); 
} else { 
alert("Access Granted."); 
} 
+2

'*有什麼辦法可以阻止用戶關閉Javascript中給出的提示?*'我當然希望不會!那太可怕了! – Biffen

+0

哈哈哈!我只是說我希望他們必須輸入對提示的迴應。我不確定爲什麼有人會低估一個合理的問題。 – Ashton

+1

您可以檢查從提示返回的值,然後從那裏繼續,但無法禁用取消/關閉選項。 – j08691

回答

1

如果用戶關閉對話框,則loginnull

條件if ((login.toUpperCase()) !== "password" || (login === null)) {將首先評估login.toUpperCase(),但由於login爲null,將拋出該異常:

Uncaught TypeError: Cannot read property 'toUpperCase' of null(…)

您需要測試如果login === null第一:

if ((login === null) || (login.toUpperCase()) !== "password") { 
+0

我明白了。這是因爲JS被認爲是「活的」並且在運行之前不首先評估?對不起,如果這是糟糕的措辭,我已習慣與C#和Java OOP。我不習慣前面的東西! – Ashton

+0

@Ashton在數據可用之前應該如何評估病情?這也是其他語言的同樣問題。 –

+0

這就是在測試if之前它會得到空響應的東西。僅僅因爲它是第二個條件,不應該意味着任何東西(至少不是在java或c#中看到的),因爲它是一個OR語句。 – Ashton

1

檢查null。如果您看到null再次提示或顯示允許用戶在方便時繼續的消息。

本地模態(例如promptalert)相當粗糙。如果重要的是你考慮實施你自己的或者使用庫。

例子:https://jsfiddle.net/37kw50wb/


<div id="start-container"> 
    <input id="start" type="button" value="Start"/> 
</div> 
<div id="continue-container" style="display: none;"> 
    Please continue when you're ready to enter a value: 
    <input id="continue" type="button" value="Continue"/> 
</div> 

document.getElementById("start").addEventListener("click", function() { 
    document.getElementById("start-container").style.display = "none"; 
    do_prompt(); 
}); 

function do_prompt() { 
    var input; 
    input = prompt("Enter something"); 
    if (input === null) { 
    document.getElementById("continue-container").style.display = ""; 
    } else { 
    // we have a value, continue your program here 
    alert("Thank you"); 
    } 
} 

document.getElementById("continue").addEventListener("click", function() { 
    do_prompt(); 
}); 
+0

我在上面添加了我的簡單代碼示例 - 我的null測試不起作用。任何想法爲什麼?謝謝 – Ashton

+0

看我的代碼示例。你的代碼不工作,因爲如果'login'爲'null','login.toUpperCase'將會拋出一個錯誤。先用'懶'或'('||')檢查'null'和'login.toUpperCase'。 – Halcyon

0

您可以檢查空字符串,然後再創建提示。請參閱下面的示例:

var msg = prompt("Write something here:"); 
while(msg === "" || msg === null) 
{ 
    //prompt again 
} 

當用戶單擊確定時沒有任何輸入框出現空字符串。用戶點擊取消時發生空值。

+1

如果用戶取消提示'null'返回,而不是'「」'。也就是說,檢查''「'或任何無效值也是值得的。 – Halcyon

+1

如果用戶在框中沒有任何內容點擊「確定」,則返回「」。 – Libby

+0

是的,但問題是當用戶關閉提示而不輸入任何內容時會發生什麼。 – Halcyon

相關問題