2014-01-02 4 views
0

Я хочу настроить событие onBlur для входного элемента, который проверяет значение и, если он недействителен, «отменяет» размытие и возвращает (или не фокусирует никогда потерю) текущий вход.управлять событием onBlur в JavaScript?

У меня есть этот мир кода уже

document.getElementById('my_input_id1').onblur = function() { 
      var self = this; 
      setTimeout(function() { self.focus(); }, 10); 
     } 

Пусть мой следующий целенаправленный элемент is'my_input_id2' , который также имеет „ONBLUR“ event.as фокус уже переехал в «my_input_id2'.When я установить фокус back to 'my_input_id1' второе событие elment 'my_input_id2' onblur. fried. Я хочу отменить onblur событие второго элемента. У меня есть много других элементов с «onlur» для Validation.

Могу ли я остановить элемент, чтобы не потерять фокус? Есть ли другая функция, которая может сделать это без потери фокуса? Должен ли я использовать некоторые что функция не теряет фокус?

Есть ли другой способ выбраться из этой проблемы?

Многое спасибо заранее.

+0

Можете ли вы подробнее рассказать о том, что вы именно хотите сделать. Ваш вопрос немного запутан. –

ответ

0

Попробуйте

$('#my_input_id1').on('blur',function(){ 
    if(SOME CONDITION){ 
     setTimeout(function(){ 
      $('#my_input_id1').focus(); 
     },100); 
     return false; 
    } 
}); 
+0

сейчас # my_input_id2 onblur будет стрелять, что является следующим элементом? Как контролировать это? –

+0

У меня уже такие же, как упоминалось в вопросе ... но проблема с потерянным фокусом –

+0

Можете ли вы поделиться скриптом –

0

Это довольно прямо вперед, чтобы делать с JavaScript:

document.getElementById('id1').onblur = function(e) { 
     if(this.value.length == 0) { 
      this.focus(); 
      e.preventDefault(); 
      return false; 
     } 
} 

По сути, просто перефокусировав элемент, основанный на критериях, конечно, это может быть все, что вы хотите его быть.

и вот скрипку: http://jsfiddle.net/m4cZ2/1/

+0

this.focus() означает, что второй elemnt onblur будет стрелять? Как остановить это, после того, как фокус onblur переместился в второй элит? –

+0

Я обновил, чтобы предотвратить событие по умолчанию. –

+0

будет фокусироваться потеряно или второе элитное onblur называется или нет ?? –

Смежные вопросы