2012-10-12 30 views
23

我打電話給一個Javascript window.prompt()並提示用戶提交一個變量,我將它與另一個變量進行比較(非常基本的密碼保護)。但是,如果在prompt()窗口上單擊"cancel",該函數不會終止,而是將該變量與空字符串進行比較(用戶選擇不通過按「取消」來選擇不提交),從而導致該功能繼續到else{ }部分。Javascript提示符() - 取消按鈕來終止函數

我的問題是,如何在按取消時終止功能?我只需要知道如何定位取消按鈕。

通常我只是打電話.stop()click()的一個按鈕,但我不知道如何定位提示窗口的取消按鈕。

+0

使用event.target ..它會給你目標元素的引用。 – Apurv

+0

當按下取消按鈕時'prompt'返回'null'。 – zzzzBov

回答

53

prompt如果用戶按OK''未提交任何值),則返回一個字符串。如果用戶按下Cancel,則返回null。所有你需要做的是檢查值是否是null

function doSomething() { 
    var input; 
    input = prompt('Do something?'); 
    if (input === null) { 
     return; //break out of the function early 
    } 
    switch (input) { 
    case 'fun': 
     doFun(); 
     break; 
    case 'boring': 
     beBoring(); 
     break; 
    } 
} 
+0

太棒了!謝謝你的幫助!你的解釋使它看起來如此明顯,就像一巴掌一樣!哈哈。再次感謝。 :) –

+0

如果這回答了您的問題,請務必選中旁邊的複選標記以將其標記爲答案。 – zzzzBov

+0

好吧 - 我是這個網站的noobie,所以我不知道。 –

2

當這是結果時,您應該明確檢查null作爲返回值(使用triple-equals)和return

var result = prompt("OK?"); 
if (result === null) { 
    return; 
} 

這可以讓你從空字符串,這是所返回什麼,當用戶點擊OK但進入沒有內容區分開來。

+0

太棒了!謝謝你的幫助!正是我在找什麼。非常該死的簡單,真的。我完全忘了'null'的回報。 –

1

你能只檢查

if (prompt_responce == null) 

說,如果它是封閉的。

+0

非常感謝! –

1

處理'提示'結果的一個重要問題是Safari(至少版本9.1.2)在單擊「取消」時返回「」而不是空。這意味着:if(result == null)return;不起作用,並且您無法區分空字符串的輸入和取消。