6 Stimmen

Ein onBlur-Ereignis in JavaScript abbrechen?

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?)

9voto

casablanca Punkte 68114

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);
}

4voto

SLaks Punkte 832502

Sie können anrufen focus() im Handler.
Das kann manchmal helfen.

3voto

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;
   }

});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X