web-dev-qa-db-ja.com

Javascript Prompt()-関数を終了するためのキャンセルボタン

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

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

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

31
Justin Ward

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;
    }
}
74
zzzzBov

戻り値としてnull(トリプルイコールを使用)を明示的にチェックし、これが結果である場合はreturnをチェックする必要があります。

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

これにより、ユーザーがOKをクリックしたがコンテンツを入力しなかった場合に返される空の文字列と区別できます。

3
Wayne Burkett

「プロンプト」の結果を処理する際の重大な問題の1つは、「キャンセル」をクリックすると、Safari(少なくともバージョン9.1.2)がnullではなく「」を返すことです。これは、if(result == null)return;動作せず、ヌル文字列の入力とキャンセルを区別できません。

2
David Crowe

確認していただけますか

if (Prompt_responce == null)

閉じているかどうかを確認します。

1
Michael Shaffer

試してください:

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

これは私のために働いた。

1
Posix Ninja