2017-01-15 6 views
2

Ich habe zwei Eingang, ein statisch:Endlosschleife in focusout jquery, nur in Chrome

<input type="text" class="someclass" /> 

und andere dynamisch:

$("<input />", { 
    type: "number", 
    min: "0" 
}).addClass("someclass").appendTo($("#someid")); 

und dieser Code funktioniert gut in statischen Eingang:

$(document).on("focusout", ".someclass", function(){ alert("hello!");}); 

Aber für dynamische Eingabe generieren Endlosschleife mit der Warnung, dies nur in Chrome passieren, hat jemand eine Idee?

Fehler ist, wenn der Fokus auf den anderen Eingang mit der gleichen Klasse gehen

+0

Eine wilde Vermutung hier: wahrscheinlich, weil, wenn ein Warnfeld in Chrome geschlossen ist, wird ein focusout Ereignis registriert? Wie auch immer, die Verwendung von 'alert()' ist keine gute Möglichkeit, neue Funktionen zu finden oder zu testen, da sie die Codeausführung blockiert. Verwenden Sie stattdessen 'console.log()'. – Terry

+0

Ihr Code scheint in Chrome in Ordnung zu sein: https://jsfiddle.net/ymazyrmn/. Möglicherweise gibt es einen anderen Code auf Ihrer Seite, der das wiederholende Fokusereignis auslöst. –

+0

Ich habe das gleiche Problem ... mein Chrom ist Versión 55.0.2883.87 m (64-Bit) – user7420251

Antwort

2

Wie Terry gesagt haben, ist der Alarm-Box nicht der beste Weg, um jede JS Problem zu beheben.

Das Ersetzen der Warnung mit console.log() zeigt, dass das Ereignis nur einmal in Chrome und anderen Browsern ausgelöst wird.

$("<input />", { 
 
    type: "number", 
 
    min: "0" 
 
}).addClass("someclass").appendTo($("#someid")); 
 

 
$(document).on("focusout", ".someclass", function() { 
 
    console.log("alert"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="someclass" /> 
 
<div id='someid'> 
 

 
</div>

Siehe diese Antwort:

Ich denke, es ist, weil das der Browser jedes Mal, wenn Sie die Schaltfläche „OK“ des Alarms klicken Fokus von der Benachrichtigung auf Ihr Textfeld sendet, . Wahrscheinlich werden Sie in der finalen Version Ihres Codes keine Warnung (Methinks) ausgeben, so dass dies auf lange Sicht kein Problem darstellt.

https://stackoverflow.com/a/6869420/529024

+0

Ja !!, Fehler nur mit alert() auftreten; mit console.log und anderen Anweisungen funktioniert gut, vielen Dank !!! – user7420251