2013-12-12 23 views
6

如何在用戶按提示時確認空值(並且以前清空提示字段)?我需要用新(空)值覆蓋舊值。我這樣做:在提示時檢測到空值

var oldVal = 'something'; 
var newVal = prompt("Enter new value:", oldVal); 

目前它返回null,如果用戶清空值並點擊確定。

但同時我需要檢查空值,因爲如果用戶點擊'取消',它將返回空值,我不想將其作爲新值。

+3

'prompt'當輸入爲空,OK按下不返回NULL;它返回空字符串。 –

回答

13

如果用戶點擊OK,它將不返回null - 它將返回一個空字符串。您可能沒有正確測試返回值。如果你想在三個不同的返回狀態之間進行測試,你可以做這樣的:

var oldVal = 'something'; 
var newVal = prompt("Enter new value:", oldVal); 
if (newVal === "") { 
    // user pressed OK, but the input field was empty 
} else if (newVal) { 
    // user typed something and hit OK 
} else { 
    // user hit cancel 
} 

工作演示:http://jsfiddle.net/jfriend00/Kx2EK/


您的意見建議您使用此代碼來測試結果:

if(!newVal || oldVal == newVal)return false; 

當用戶清除場並按下OK,的newval將""(空字符串)。 !newVal將是true因此您將返回false。一個空字符串就像null一樣是一個虛假的值。你需要更明確地檢查null這樣的:

if (newVal === null || newVal === oldVal) { 
    // cancel button was hit 
    // or the same value was entered 
    return false; 
} 

工作這一邏輯的演示:http://jsfiddle.net/jfriend00/ynwBx/

注:我使用===防止JavaScript解釋器從做任何類型的鑄造,我想只明確檢查null

+0

但我需要在我的聲明中有這個:if(!newVal || oldVal == newVal)return false;所以我需要檢查null。如果用戶清空提示字段,然後按ok,則返回null。 – Toniq

+0

@Toniq - 你似乎不明白'!newVal'也會匹配一個空字符串,所以你不能區分'null'(取消按鈕)和一個空字符串(ok按鈕)。我已將代碼添加到我的答案中,可以告訴您如何執行所要求的操作。 – jfriend00

+0

謝謝,它現在可行! – Toniq

2

在大多數瀏覽器中提示將返回null如果用戶按下取消,但在某些(Safari,例如)它會返回空字符串。如果用戶輸入一些文本並按下確定,提示將返回輸入的文本,如果用戶在沒有輸入文本的情況下按下確定,它將返回空字符串。

1

有點老了,但它可能是值得的只是包括在同一個if()語句

if(newVal !=null & newVal.length>0){ 

無論是取消,空項檢查字符串的長度測試。

+0

你測試過了嗎?應該有'&&',而不是二進制'&'(雖然我不確定'&'是否也能在這裏工作) – YakovL

0
<html> 
<body>  
<p>Click the button to demonstrate the prompt box.</p>  
<button onclick="myFunction()">Try it</button>  
<p id="demo"></p>  
<script> 
function myFunction() { 
    var answer=prompt('Reason for deletion?'); 
    var n = answer.length; 
    if(n > 5) 
    { 
    document.getElementById("demo").innerHTML = 
    "Hello " + answer + "! How are you today?"; 
    } 
    else if(n == 0) 
    { 
    myFunction() 
    } 
} 
</script>  
</body> 
</html> 
+0

請提供說明 – bc004346

+0

您可以在提示框中檢查空值...如果提示框返回一個空值,然後它返回到相同的功能... – sebastian

0

簡單,看是否都取消或確定與空字符串

function valueIsSet(value) 
{ 
    return (value && value !== "") 
} 

// example: 

var name; 
while (!valueIsSet(name) { 
    name = prompt("Please enter your name"); 
} 

alert("Welcome " + name);