Beim Schreiben eines Jasmintests scheint jQuery nicht zu erkennen, dass eine Eingabe den Fokus hat. Wenn zwischen den beiden Eingabeelementen gewechselt wird, wird die Warnung nicht angezeigt, und wenn Sie auf die Eingaben klicken, ohne die andere zu fokussieren, wird die Warnung angezeigt. Durch die Verwendung von .focus
und .blur
in meinem Testcode kann ich jedoch nicht das gewünschte Verhalten erzielen. Es denkt immer, dass keiner von ihnen konzentriert ist. Auch ohne den Aufruf .triggerHandler
wird der Blur-Handler überhaupt nicht aufgerufen.jQuery .blur .focus funktioniert nicht im Test
Die Eingänge sind sichtbar und an das DOM angeschlossen.
var $inputs = $("input");
function blurTimeout() {
if (!$inputs.is(":focus")) {
alert("Nothing's focused");
}
}
function blur() {
setTimeout(blurTimeout, 0);
}
function main() {
$inputs.on("blur", blur);
}
$(main);
bearbeiten Es scheint, dass $inputs.first().focus()
Aufruf einer der Eingänge zu konzentrieren, dann alert($inputs.first().is(":focus"))
Benachrichtigungen false
.
var $input = $inputs.first();
$input.focus();
alert(!!$input.is("focus")); // -> false
Huh. Sehr merkwürdig, weil dies im Projektcode funktioniert (selbe Ereigniseinstellung, gleiche Bedingungslogik). Danke, ich werde sehen, ob das morgen behoben wird. – ARandomFurry
Nachdem ich Ihre Lösung getestet hatte, erkannte ich, dass ich das Problem möglicherweise nicht richtig erklärt hatte. Ich möchte '! $ Inputs.is (": focus ")' zurückgeben, wenn eine der Eingaben den Fokus hat. – ARandomFurry
Und das ist, was Sie bekommen. Wo ist das Problem dann? ..... ** Aber, noch wichtiger, welches Verhalten suchst du, wenn der Fokus von einem Eingang zum anderen Eingang geht? ** – PeterKA