如何在用戶按提示時確認空值(並且以前清空提示字段)?我需要用新(空)值覆蓋舊值。我這樣做:在提示時檢測到空值
var oldVal = 'something';
var newVal = prompt("Enter new value:", oldVal);
目前它返回null,如果用戶清空值並點擊確定。
但同時我需要檢查空值,因爲如果用戶點擊'取消',它將返回空值,我不想將其作爲新值。
如何在用戶按提示時確認空值(並且以前清空提示字段)?我需要用新(空)值覆蓋舊值。我這樣做:在提示時檢測到空值
var oldVal = 'something';
var newVal = prompt("Enter new value:", oldVal);
目前它返回null,如果用戶清空值並點擊確定。
但同時我需要檢查空值,因爲如果用戶點擊'取消',它將返回空值,我不想將其作爲新值。
如果用戶點擊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
。
在大多數瀏覽器中提示將返回null
如果用戶按下取消,但在某些(Safari,例如)它會返回空字符串。如果用戶輸入一些文本並按下確定,提示將返回輸入的文本,如果用戶在沒有輸入文本的情況下按下確定,它將返回空字符串。
有點老了,但它可能是值得的只是包括在同一個if()語句
if(newVal !=null & newVal.length>0){
無論是取消,空項檢查字符串的長度測試。
你測試過了嗎?應該有'&&',而不是二進制'&'(雖然我不確定'&'是否也能在這裏工作) – YakovL
<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>
簡單,看是否都取消或確定與空字符串
function valueIsSet(value)
{
return (value && value !== "")
}
// example:
var name;
while (!valueIsSet(name) {
name = prompt("Please enter your name");
}
alert("Welcome " + name);
'prompt'當輸入爲空,OK按下不返回NULL;它返回空字符串。 –