2014-06-19 5 views
0

В моей проверке формы, на представить, я проверку формы, и найти незаполненный элемент и фокусировку с помощью этой функции: отлично работаетКак переопределить фокус на вкладке или клике пользователя (фокус)

switch (tagName) { 
    case 'TEXT': 
     if (!actualValue) { 
      $(target).next('.error').css('display', 'block'); 
      that.submitIt = false; 
      target.select(); 
     } else { 
      $(target).next('.error').css('display', 'none'); 
      that.submitIt = true; 
     } 
     break; 
    case "SELECT-ONE": 
     if (actualValue === 'Select') { 
      $(target).next('.error').css('display', 'block'); 
      that.submitIt = false; 
      target.select(); 
     } else { 
      $(target).next('.error').css('display', 'none'); 
      submitIt = true 
     } 
     break; 
    case "RADIO": 
    case "CHECKBOX": 
     if (actualValue && actualValue !== 'undefined') { 
      $(target).siblings('.error').css('display', 'none'); 
      that.submitIt = true; 
     } else { 
      $(target).siblings('.error').css('display', 'block'); 
      that.submitIt = false; 
      target.select(); 
     } 
     break; 
} 

Но проблема в том, что функция не позволяет пользователю двигаться дальше (используя вкладку или вручную переключиться на следующее поле).

Как переопределить фокус на вкладке или ручном перемещении (фокусе) или клавишах со стрелками?

Live Demo

+1

Не могли бы вы также разместить свой HTML-код? –

+0

Демонстрация добавлена. спасибо – 3gwebtrain

+0

В вашей демонстрации все работает отлично для меня, и я могу перейти от текущего поля к следующему, используя кнопку TAB. –

ответ

4

Проблема заключается в target.select() линий. Каждый раз, когда вы проверяете свое поле ввода и проверка не выполняется (например, когда вы пытаетесь покинуть поле), он будет повторно выбирать это же поле.

EDIT: Поскольку вы проверяете на фокусировку, а затем повторно выбираете, я действительно не вижу другого пути, кроме удаления target.select(). Как вы говорите, вы не можете иметь свой торт и есть. Альтернативой является только проверка на отправке.

Плагин проверки JQuery, например, помечает поле как недействительное при изменении и фокусировке, но не будет выбирать его. Вероятно, из-за этой проблемы.

+0

Я искал преодоления от этого ..!? ищущий хороший подход – 3gwebtrain

+0

См. edit @ 3gwebtrain. – Cros

+0

Есть ли способ убить фокус на setInterval? – 3gwebtrain

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