Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   fucus() в обработчике onblur (https://javascript.ru/forum/events/35260-fucus-v-obrabotchike-onblur.html)

rgl 05.02.2013 13:43

fucus() в обработчике onblur
 
Есть текстовое поле input, нужно проверить введенное пользователем значение, и если оно не верное, не давать ему уйти с этого поля.
Делаю так - в обработчике onblur проверяю корректность, и если ошибка, вызываю focus
Это работает в хроме и в IE6, но НЕ работает в firefox, вопрос - почему?
При этом метод focus, если он висит не на обработчике onblur, работает нормально.
Вот пример:
http://learn.javascript.ru/play/zhPeT
По задумке, если первое поле пустое, уйти с него нельзя.
По кнопке вызывается та же функция - проверка, и если ошибка, focus, она работает.
Вопрос - почему в firefox не работает focus, если он в обработчике onblur?

danik.js 05.02.2013 14:32

Хз, но в подобных случаях setTimeout обычно решает проблему :)

Deff 05.02.2013 14:49

function check()
      { var a = document.getElementsByTagName('form')[0].getElementsByName('n1')[0];
         if(idTimer)clearTimeout(idTimer)
        if( a.value.length == 0 )
          idTimer = setTimeout( function check() {a.focus()},10);
      }

rgl 05.02.2013 16:03

С таймаутом работает, но хочется не только чтобы работало, а разобраться.

Цитата:

Сообщение от Deff (Сообщение 231744)
var a = document.getElementsByTagName('form'[0].getElementsByName('n1')[0];

var a = document.getElementsByTagName('form'[0].getElementsByName('n1')[0];


Часовой пояс GMT +3, время: 14:48.