如何通过默认情况下的JavaScript提示符()取消用户点击的时间?

时间:2013-11-15 19:31:09

标签: javascript default prompt

通常,如果您向用户询问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

3 个答案:

答案 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)

演示:http://jsfiddle.net/GK5wq/