2012-10-12 12 views
23

Dzwonię pod numer JavaScript window.prompt() i monituje użytkownika o przesłanie zmiennej, którą porównuję z inną zmienną (bardzo podstawowe zabezpieczenie hasłem). Funkcja działa świetnie, jednak jeśli klikniesz na "cancel" w oknie prompt(), funkcja nie kończy się, lecz porównuje zmienną z pustym łańcuchem (który użytkownik zdecydował się nie przesyłać, naciskając "Anuluj"), co powoduje funkcja kontynuująca część else{ }.Polecenie Javascript() - przycisk anulowania w celu zakończenia funkcji

Moje pytanie brzmi, w jaki sposób zakończyć funkcję po naciśnięciu Anuluj? Po prostu muszę wiedzieć, jak kierować przycisk anulowania.

Zazwyczaj po prostu zadzwoniłbym pod numer .stop() na przycisku click(), ale nie wiem, jak kierować przycisk anulowania okna zachęty.

+0

użyj event.target..it da ci odniesienie do elementu docelowego. – Apurv

+0

'prompt' zwraca' null' po naciśnięciu przycisku anulowania. – zzzzBov

Odpowiedz

53

prompt zwraca ciąg znaków, jeśli użytkownik naciśnie OK ('' przy braku przesłanej wartości). Jeśli użytkownik naciśnie przycisk Cancel, zostanie zwrócony null. Wszystko, co musisz zrobić, to sprawdzić, czy wartość jest 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; 
    } 
} 
+0

Awesome! Dziękuję za pomoc! Twoje wyjaśnienie sprawiło, że wydawało się tak oczywiste, że było jak uderzenie w twarz! Ha ha. Dzięki jeszcze raz. :) –

+0

Jeśli to odpowiedział na twoje pytanie, należy zaznaczyć zaznaczenie obok niego, aby oznaczyć go jako odpowiedź. – zzzzBov

+0

OK - jestem noobiem tej strony, więc nie wiedziałem. –

2

Należy jawnie sprawdzić dla null jako wartość zwracaną (używając potrójnego równika) i return, gdy jest to wynik.

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

Pozwala to odróżnić od pustej struny, która jest co zwracany, gdy użytkownik kliknie OK ale wchodzi żadnej zawartości.

+0

Awesome! Dziękuję za pomoc! Dokładnie to, czego szukałem. Całkiem cholernie proste, naprawdę. Całkowicie zapomniałem o zwrotach "null". –

1

można po prostu sprawdzić

if (prompt_responce == null) 

aby stwierdzić, czy jest on zamknięty.

+0

Wielkie dzięki! –

1

Jednym z poważnych problemów z obsługą wyniku "prompt" jest to, że Safari (przynajmniej wersja 9.1.2) zwraca "" zamiast wartości zerowej po kliknięciu "Anuluj". Oznacza to, że: if (result == null) return; nie działa i nie można odróżnić wpisu łańcucha pustego i anulowania.

Powiązane problemy