44

我正在调用 Javascriptwindow.prompt()并提示用户提交一个变量,我将其与另一个变量进行比较(一个非常基本的密码保护)。该函数效果很好,但是,如果您单击"cancel"窗口prompt(),该函数不会简单地终止,而是将变量与空字符串进行比较(用户选择不通过按“取消”来提交)导致函数继续该else{ }部分。

我的问题是,如何在按下取消后终止该功能?我只需要知道如何定位取消按钮。

通常我只会在按钮.stop()上调用 a click(),但我不知道如何定位提示窗口的取消按钮。

4

5 回答 5

102

promptOK如果用户按下(''没有提交值),则返回一个字符串。如果用户按下Cancelnull则返回。您需要做的就是检查该值是否为null

function doSomething() {
    var input;
    input = prompt('Do something?');
    if (input === null) {
        return; //break out of the function early
    }
    switch (input) {
    case 'fun':
        doFun();
        break;
    case 'boring':
        beBoring();
        break;
    }
}
于 2012-10-12T18:00:15.300 回答
5

您应该明确检查null作为返回值(使用三等号)以及return何时是结果。

var result = prompt("OK?");
if (result === null) {
    return;
}

这使您可以与空字符串区分开来,空字符串是用户单击OK但未输入内容时返回的内容。

于 2012-10-12T17:59:09.110 回答
4

处理“提示”结果的一个重大问题是,当单击“取消”时,Safari(至少版本 9.1.2)返回“”而不是 null。这意味着: if(result==null) return; 不起作用,并且您无法区分空字符串的输入和取消。

于 2016-07-22T04:47:14.440 回答
2

你能检查一下吗

if (prompt_responce == null)

告诉它是否关闭。

于 2012-10-12T18:15:31.410 回答
1

尝试:

message = prompt("Enter text");
if(message == "null" || message == null || message == "" );

这对我有用。

于 2018-09-20T07:36:48.557 回答