44

私はJavascriptwindow.prompt()を呼び出して、別の変数と比較する変数を送信するようにユーザーに促しています(非常に基本的なパスワード保護)。"cancel"関数はうまく機能しますが、ウィンドウをクリックするprompt()と、関数は単に終了するのではなく、変数を空の文字列(ユーザーが代わりに「キャンセル」を押して送信しないことを選択した)と比較し、関数になります。そのelse{ }部分に続きます。

私の質問は、キャンセルを押したときに機能を終了するにはどうすればよいですか?キャンセルボタンをターゲットにする方法を知る必要があります。

.stop()通常はボタンのを呼び出すだけclick()ですが、プロンプトウィンドウのキャンセルボタンをターゲットにする方法がわかりません。

4

5 に答える 5

102

promptユーザーが押すと文字列を返しますOK''値が送信されていない場合)。ユーザーがを押すCancelと、nullが返されます。あなたがする必要があるのは、値が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

'prompt'の結果を処理する際の重大な問題の1つは、[キャンセル]をクリックするとSafari(少なくともバージョン9.1.2)がnullではなく""を返すことです。これは、次のことを意味します。if(result == null)return; は機能せず、null文字列の入力とキャンセルを区別できません。

于 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 に答える