2012-10-12 34 views
23

Ich rufe ein Javascript window.prompt() und fordert den Benutzer auf, eine Variable, die ich mit einer anderen Variablen (ein sehr einfaches Passwortschutz) vergleichen. Die Funktion funktioniert gut, wenn Sie jedoch auf "cancel" auf dem prompt()-Fenster klicken, wird die Funktion nicht einfach beendet, sondern vergleicht die Variable mit einer leeren Zeichenfolge (die der Benutzer nicht durch Drücken von "Abbrechen" statt "senden" ausgewählt hat) die Funktion wird fortgesetzt zu dem else{ } Teil.Javascript prompt() - Schaltfläche Abbrechen, um die Funktion zu beenden

Meine Frage ist, wie beende ich die Funktion beim Drücken von Abbrechen? Ich muss nur wissen, wie ich den Abbrechen-Button ansteuern soll.

Normalerweise würde ich nur eine .stop() auf der click() einer Schaltfläche anrufen, aber ich weiß nicht, wie Sie die Schaltfläche Abbrechen des Prompt-Fensters als Ziel.

+0

Verwenden Sie event.target..it gibt Ihnen Zielelement Referenz. – Apurv

+0

'prompt' gibt' null' zurück, wenn die Abbrechen-Taste gedrückt wird. – zzzzBov

Antwort

53

prompt gibt eine Zeichenfolge zurück, wenn der Benutzer OK ('' ohne Wert) drückt. Wenn der Benutzer Cancel gedrückt hat, wird null zurückgegeben. Alles, was Sie tun müssen, ist zu überprüfen, ob der Wert null ist:

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; 
    } 
} 
+0

Super! Vielen Dank für Ihre Hilfe! Deine Erklärung ließ es so offensichtlich erscheinen, dass es wie ein Schlag ins Gesicht war! Haha. Danke noch einmal. :) –

+0

Wenn dies Ihre Frage beantwortet, achten Sie darauf, das Häkchen neben es zu markieren, um es als Antwort zu markieren. – zzzzBov

+0

Ok - Ich bin ein Noobie zu dieser Seite, also wusste ich nicht. –

2

Sie sollten explizit nach null als Rückgabewert (mit triple-equals) und return überprüfen, wenn dies das Ergebnis ist.

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

Auf diese Weise können Sie von der leeren Zeichenfolge unterscheiden, das ist, was zurückgegeben wird, wenn der Benutzer klickt OK aber betritt keinen Inhalt.

+0

Super! Vielen Dank für Ihre Hilfe! Genau das, was ich gesucht habe. Ziemlich verdammt einfach, wirklich. Ich habe die Rückkehr von 'Null' völlig vergessen. –

1

Können Sie sich für

überprüfen
if (prompt_responce == null) 

zu sagen, wenn es geschlossen ist.

+0

Vielen Dank! –

1

Ein wesentliches Problem bei der Verarbeitung des Ergebnisses von 'prompt' ist, dass Safari (mindestens Version 9.1.2) "" anstelle von null zurückgibt, wenn auf "Abbrechen" geklickt wird. Das bedeutet: if (result == null) return; funktioniert nicht, und Sie können nicht zwischen dem Eintrag einer Nullzeichenfolge und der Stornierung unterscheiden.

Verwandte Themen