Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.02.2013, 13:43
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

fucus() в обработчике onblur
Есть текстовое поле input, нужно проверить введенное пользователем значение, и если оно не верное, не давать ему уйти с этого поля.
Делаю так - в обработчике onblur проверяю корректность, и если ошибка, вызываю focus
Это работает в хроме и в IE6, но НЕ работает в firefox, вопрос - почему?
При этом метод focus, если он висит не на обработчике onblur, работает нормально.
Вот пример:
http://learn.javascript.ru/play/zhPeT
По задумке, если первое поле пустое, уйти с него нельзя.
По кнопке вызывается та же функция - проверка, и если ошибка, focus, она работает.
Вопрос - почему в firefox не работает focus, если он в обработчике onblur?
Ответить с цитированием
  #2 (permalink)  
Старый 05.02.2013, 14:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Хз, но в подобных случаях setTimeout обычно решает проблему
Ответить с цитированием
  #3 (permalink)  
Старый 05.02.2013, 14:49
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

Последний раз редактировалось Deff, 05.02.2013 в 14:54.
Ответить с цитированием
  #4 (permalink)  
Старый 05.02.2013, 16:03
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

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

Сообщение от Deff Посмотреть сообщение
var a = document.getElementsByTagName('form'[0].getElementsByName('n1')[0];
var a = document.getElementsByTagName('form'[0].getElementsByName('n1')[0];
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неверно работает OnBlur и, как следствие - OnFocus motoriton Firefox/Mozilla 0 10.08.2012 09:06
Получение ссылки на объект в обработчике нажатия кнопки pauluss ExtJS 1 22.06.2011 15:27
Отключить в обработчике события дальнейшие обработчики danik.js Events/DOM/Window 2 13.11.2010 19:51
onBlur, надпись приделать megaterik Events/DOM/Window 2 28.10.2009 09:54
Как заставить this в обработчике события указывать на объект? Dmitryk Events/DOM/Window 3 16.03.2009 08:45