JavaScript prompt() - bouton Annuler pour mettre fin à la fonction

J'appelle un Javascript window.prompt() et 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" sur la fenêtre prompt(), la fonction ne se termine pas simplement, mais compare plutôt la variable à une chaîne vide (que l'Utilisateur a choisi de ne pas soumettre en appuyant sur "Annuler" à la place). la fonction continue à 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 annuler.

, Généralement, je voudrais simplement appeler un .stop() sur click() d'un bouton, mais je ne sais pas comment cibler l'invite-fenêtre du bouton annuler.

26
demandé sur zzzzBov 2012-10-12 21:55:55

5 réponses

prompt retourne une chaîne de caractères si l'utilisateur appuie sur OK ('' être sans valeur, soumis). Si l'Utilisateur a appuyé sur Cancel, null est retourné. Tout ce que vous devez faire est 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;
    }
}
63
répondu zzzzBov 2012-10-12 18:00:15

Vous devriez explicitement vérifier null comme valeur de retour (en utilisant triple-equals) et return Quand c'est le résultat.

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

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

2
répondu Wayne Burkett 2012-10-12 17:59:09

Pouvez-vous simplement vérifier

if (prompt_responce == null)

Pour savoir si elle est fermée.

1
répondu Michael J Shaffer 2012-10-12 18:15:31

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

1
répondu David Crowe 2016-07-22 04:47:14

Essayez:

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

Cela a fonctionné pour moi.

-1
répondu Posix Ninja 2018-09-20 08:14:25