【发布时间】:2013-11-15 19:31:08
【问题描述】:
通常,如果您用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”还是点击了取消。
UPDATE 3:我觉得很傻,问题出在我的代码上。 prompt 在点击取消时实际上是在返回 null!
【问题讨论】:
-
存储原始值(以便稍后比较)并且不要使用可接受的值预先填充提示。
-
您可以尝试提示
"\x00Fred"并检查他们是否更改了字符串 -
@megawac 当然,如果他们碰巧被称为“Fred”并单击“确定”,您将放弃答案。
-
您也可以只使用不受古代 DOM 函数限制的众多 DHTML 对话框库之一。
-
alert和朋友是获取用户输入的非常糟糕的方式。
标签: javascript default prompt