通常,如果您向用户询问prompt
的问题,如下所示,并且用户点击取消,则prompt
函数会返回null
:
var name = prompt('What is your name?');
var hitCancel = name === null;
效果很好,除了现在我想在提示中输入默认答案:
var name = prompt('What is your name?', 'Fred');
现在即使用户点击取消,也会返回'Fred'!即使用户输入'Smith'并且他们点击取消,'Fred'仍然会被退回!如何判断用户点击取消?
更新 :忘记提及我在Firefox和Chrome中对此进行了测试。我知道还有其他用户输入库,但在我的特殊情况下,我需要使用prompt
函数。
更新2 :建议将“\ x00Fred”用作默认值。注意到有趣的东西。如果单击取消,则“Fred”将返回。但是,如果只需单击“确定”,则返回“\ x00Fred”。我希望它是相反的方式!因为我不知道是否有人在“Fred”中写道或者他们点击了取消。
更新3 :我觉得非常愚蠢,问题出在我的代码上。实际上prompt
在点击取消时返回null
!
答案 0 :(得分:1)
虽然使用提示或警报功能不是最佳选择。这是如何完成的
var defaultName = "Fred";
var name = prompt('What is your name?');
if (!name){
// this section means they clicked cancel
name = defaultName;
// plus do anything else you want in case of cancel.
}
答案 1 :(得分:1)
也许我错过了,但对我来说,即使有默认答案,prompt()
函数也会在取消时返回null
。
请参阅小提琴:http://jsfiddle.net/TuzE3/3/
答案 2 :(得分:0)
对于我的测试(Chrome和Safari for mac)取消返回空字符串,请尝试:
var name = prompt('What is your name?', 'Fred');
var hitCancel = !(name != "" && name !== null);
console.log(hitCancel)