How do I force blurring, but without calling onBlur event in JavaScript/jQuery?
I’ll try to describe you what I need it for:
- when onBlur is called, I call a PHP script via jQuery and validating input. If there’s something wrong, it returns a message and then I display it back in jQuery script.
- if a blurred field isn’t filled, script should focus user back to that field.
And the problem is that if you press TAB to change field, and your first field is not filled, script will focus you back, but then is called onBlur from second field that is also not filled, and then it causes an infinite loop.
So, i want to blur a field and focus to another without calling onBlur event.
It’s not an answer as spec’ed in your question, but what I’d suggest you do (in a somewhat UX sort of perspective) is to scrap the auto-refocus on invalid input, and instead mark the invalid field (may I suggest red, for example?). Now, you can go and deal with the (arguably) simpler problem of preventing a form submit on invalid data, instead of the problem of preventing a natural browser behavior type of an event.
Additionally, I’d dare to say that auto-refocusing is irritating for the user. Imagine tabbing to the second field, start typing, then suddenly yoink! You get dragged to the first field.