2017-06-27 1 views
1

Wenn ich in dem <input> Tag unten klicken, wird die alert() im folgenden Code erscheinen immer wieder, nachdem ich die Schaltfläche „OK“ der alert() klicken.alert() in focusin Veranstaltung weiter Aufspringen

Was muss ich tun, um die Warnung nach dem Klicken auf die Schaltfläche "OK" zu stoppen? Mein Code muss aus dem Eingabe-Tag herauskommen und einige andere Dinge tun.

.... 
<input type="text" class="txtInput" value="Test for focusin event" /> 
.... 
<input type="button" id="goBtn" value="GO" /> 
<script> 
$(".txtInput").focusin(function() { 
    var t = $(this).val(); 
    alert(t); 
}); 
<script> 

Antwort

0

können Sie ein boolesches Flag Spur verwenden, wenn Sie bereits konzentriert:

.... 
<input type="text" class="txtInput" value="Test for focusin event" /> 
.... 
<input type="button" id="goBtn" value="GO" /> 
<script> 
var focused=false; 
$(".txtInput").focusin(function() { 
    if(focused) return; 
    focused=true; 
    var t = $(this).val(); 
    alert(t); 
}); 
<script> 

Nach der Ausführung der Wert wieder auf false gesetzt werden.

Alternativ können Sie den Handler lösen und bei Bedarf erneut binden.

0

Der Fokus kehrt zum input zurück, nachdem der Dialog alert() geschlossen wurde. Wenn Sie nur alert() einmal überprüfen wollen, verfolgen:

var alerted = false; 

$(".txtInput").focusin(function() { 

    if (! alerted) { 
    alerted = true; 

    var t = $(this).val(); 

    alert(t); 
    } 
}); 

oder nur console.log() stattdessen verwenden, und insgesamt alert() Popups und mehrere Fokusprobleme vermeiden.

1

Das liegt daran, wenn die Eingabe fokussiert wird, erscheint die Warnung, und dann verliert die Eingabe den Fokus. Wenn Sie die Alarmbox schließen, wird der Fokus wieder auf den vorherigen Wert (Eingabe) zurückgesetzt, so dass die Eingabe den Fokus erhält und die Warnung erscheint.

Einfach loswerden. Wenn Sie debuggen möchten, verwenden Sie console.log.