您如何判断用户何时从默认的 JavaScript 提示符 () 中单击取消

How can you tell when user clicked cancel from a JavaScript prompt() with a default?

本文关键字:JavaScript 提示符 取消 单击 默认 何时 何判断 判断 用户      更新时间:2023-09-26

通常,如果您向用户提出如下prompt问题,并且用户点击取消,则prompt函数返回null

var name = prompt('What is your name?');
var hitCancel = name === null;

效果很好,除了现在我想在提示中输入默认答案:

var name = prompt('What is your name?', 'Fred');

现在,即使用户点击取消,也会返回"弗雷德"!即使用户输入"史密斯"并单击取消,"弗雷德"仍将返回!如何知道用户何时单击了取消?

更新:忘了提到我已经在Firefox和Chrome中对此进行了测试。我知道还有其他库可供用户输入,但在我的特殊情况下,我需要使用 prompt 函数。

更新 2:"''x00Fred"建议用作默认值。注意到那里有一些有趣的东西。如果单击"取消",则返回"Fred"。但是,如果只是单击"确定",则会返回"''x00Fred"。我希望是相反的方式!因为我不知道是有人写了"弗雷德"还是他们点击了取消。

更新3:我觉得很傻,问题出在我的代码上。 prompt实际上在点击取消时返回null

也许我错过了一些东西,但对我来说,即使有默认答案,prompt() 函数也总是在取消时返回null

看小提琴:http://jsfiddle.net/TuzE3/3/

尽管使用提示或警报功能并不是最理想的。 这是它是如何完成的

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.
}

对于我的测试(Chrome 和 Safari for mac),在这种情况下取消返回空字符串,因此请尝试:

var name = prompt('What is your name?', 'Fred');
var hitCancel = !(name != "" && name !== null);
console.log(hitCancel)

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