2014-11-15 4 views
0

Я использую валидатор jquery для проверки полей формы. Для поля ниже:сосредоточиться на первом поле, используя валидатор jquery

enter image description here

  1. Фокус на третье поле электронной почты 2 т.е., но я хочу сосредоточиться на первом поле т.е. факс.

  2. Сообщение об ошибке отображается между текстом и другим статическим текстом, из-за которого сдвиги выравнивания здесь и там. Лучший способ отображения сообщений.

  3. В нескольких сценариях отображается только сообщение об ошибке, но не фокус, из-за которого пользователь не знает об ошибке.

Код:

var validator = $("#enrollmentForm").validate({ 
    errorElement: 'label', 
    errorPlacement: function(error, element) { 
     error.insertAfter(element); 
     element.focus(); 
    }, 
}); 

Может кто-то обеспечить решение?

+0

Можете ли вы показать некоторые из кода проверки? – haxtbh

+0

Я добавил код, который я использую. –

+0

2. Сообщение об ошибке отображается между текстом и другим статическим текстом, из-за которого сдвиги выравнивания здесь и там. Лучший способ отображения сообщений. Это работает после изменения error.insertAfter (element); to error.appendTo (element.next()); : –

ответ

0

Ваш собственный код вызывает проблемы, которую вы описываете.

errorPlacement: function (error, element) { 
    error.insertAfter(element); 
    element.focus(); // <- this line is causing your whole problem 
}, 

Используя element.focus внутри errorPlacement, вы говорите это, чтобы сосредоточиться на элемент оценивается правильно, когда она была оценена. Если mutiple-элементы недействительны сразу, фокус, естественно, остается на самом последнем, который был оценен, так как форма оценивается сверху вниз.

Демонстрация проблемы, вызванной ваш собственный код: http://jsfiddle.net/6y3k6jtc/


element.focus() Удаление строки полностью фиксирует свой код, потому что вы позволяете по умолчанию фокуса плагина для работы по назначению. (По умолчанию, плагин автоматически знает поместить фокус на самом первом недопустимого элемента ввода.)

errorPlacement: function (error, element) { 
    error.insertAfter(element); 
}, 

DEMO рабочего кода: http://jsfiddle.net/6y3k6jtc/1/

0

Использование

invalidHandler: function(form, validator) { 
    var errors = validator.numberOfInvalids(); 
    if (errors) {      
     validator.errorList[0].element.focus(); 
    } 
} 
+0

Спасибо большое! Работает. Когда отображается ошибка, выравнивание сдвигается влево, текст текста перемещается влево, что я делаю для переключения справа, а не слева. –

+0

@bharghavivajrala привет, если он работает, вы можете сделать +1 и принять ответ. Что касается вашего текущего вопроса, я решил его. Вы можете отредактировать вопрос, я скажу вам ответ. Спасибо! –

+0

@bharghavivajrala, вы можете сделать +1 тоже. спасибо –