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.
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;
}
}
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.
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.
Pouvez-vous simplement vérifier
if (Prompt_responce == null)
pour dire s'il est fermé.
Essayer:
message = Prompt("Enter text");
if(message == "null" || message == null || message == "" );
Cela a fonctionné pour moi.