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.
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;
}
}
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.
Pouvez-vous simplement vérifier
if (prompt_responce == null)
Pour savoir si elle est fermée.
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.
Essayez:
message = prompt("Enter text");
if(message == "null" || message == null || message == "" );
Cela a fonctionné pour moi.