web-dev-qa-db-fra.com

Javascript Prompt () - bouton d'annulation pour terminer la fonction

J'appelle un Javascript window.Prompt() et j'invite l'utilisateur à soumettre une variable que je compare à une autre variable (une protection par mot de passe très basique). La fonction fonctionne très bien, cependant, si vous cliquez sur "cancel" Dans la fenêtre Prompt(), la fonction ne se termine pas simplement, mais compare plutôt la variable à une chaîne vide (que l'utilisateur n'a pas choisie pour soumettre en appuyant sur "Annuler" à la place), la fonction continue jusqu'à la partie else{ }.

Ma question est, comment puis-je mettre fin à la fonction en appuyant sur Annuler? J'ai juste besoin de savoir comment cibler le bouton d'annulation.

Habituellement, j'appelle simplement une .stop() sur la click() d'un bouton, mais je ne sais pas comment cibler le bouton d'annulation de la fenêtre d'invite.

31
Justin Ward

Prompt renvoie une chaîne si l'utilisateur appuie sur OK ('' étant sans valeur soumise). Si l'utilisateur a appuyé sur Cancel, null est renvoyé. Il vous suffit de vérifier si la valeur est 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

Vous devez explicitement rechercher null comme valeur de retour (en utilisant le triple égal) et return lorsque ceci est le résultat.

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

Cela vous permet de faire la distinction avec la chaîne vide, qui est ce qui est renvoyé lorsque l'utilisateur clique sur OK mais n'entre aucun contenu.

3
Wayne Burkett

Un problème important avec la gestion du résultat de 'Prompt' est que Safari (au moins la version 9.1.2) retourne "" au lieu de null lorsque "Cancel" est cliqué. Cela signifie que: if (result == null) return; ne fonctionne pas et vous ne pouvez pas faire la distinction entre l'entrée d'une chaîne nulle et l'annulation.

2
David Crowe

Pouvez-vous simplement vérifier

if (Prompt_responce == null)

pour dire s'il est fermé.

1
Michael Shaffer

Essayer:

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

Cela a fonctionné pour moi.

1
Posix Ninja