Ich möchte eine onBlur Ereignis für eine Eingabe Element, das den Wert validiert und, falls er ungültig ist, die Unschärfe "aufhebt" und die Eingabe neu fokussiert. Wird jedoch false von onBlur annulliert nicht die onBlur so wie es bei onClick . Gibt es eine Lösung für diese (vielleicht mit jQuery?)
Antworten
Zu viele Anzeigen?Ich kenne keine zuverlässige, browserübergreifende Möglichkeit, dies zu tun. Normalerweise Einstellung einer kleinen Timeout in der onblur
Ereignis und Aufruf focus()
wenn der Timer ausgelöst wird.
Zum Beispiel:
document.getElementById('your_input_id').onblur = function() {
var self = this;
setTimeout(function() { self.focus(); }, 10);
}
SLaks
Punkte
832502
Uyghur Lives Matter
Punkte
17119
Sie können dies erreichen, indem Sie die jQuery-Funktion focus()
Funktion innerhalb einer Null-Sekunden-Zeitüberschreitung. Hier ist ein Beispiel:
$('#my_input').bind('blur', function(event) {
var $input = $(this);
var is_input_valid = false;
// Code to determine if input is valid
// ...
if (!is_input_valid) {
setTimeout(function() {
$input.focus();
}, 0);
return false;
}
});