2015-12-21 2 views
1

Я столкнулся с проблемой пользовательского интерфейса с проверкой, которую я действительно хочу решить. Для веб-сайта: http://fun-booths.co.uk/dev/Проверка ввода текста - ошибка в реализации

Я использую этот простой плагин для проверки: http://www.formvalidator.net/

Простой код за это следующим образом:

$.validate({ 
     form : '#fscf_form1, #fscf_form2', 
     validateOnBlur : true, 
     scrollToTopOnError : false 
    }); 

Свойство validateOnBlur убеждается проверка происходит, когда входы рыхлый фокус.

На правой боковой панели есть форма. При выборе даты и времени проверка правильности работы.

Заполните поля города и почтового индекса с помощью правильного формата данных теста, например. Вы заметите, что зеленый тик динамически появляется. Теперь для полей даты и времени, которые конечный пользователь не набирает, ввод вводится в поле формы, нажимая на ответный выбор времени/выбор даты соответственно.

После выбора даты и времени и фокусировки на других входных элементов это приводит к следующему вопросу (даже если значение было выбрано красным крестом представлено в поле формы, не желаемое поведение.):

enter image description here

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

Примечание: странное поведение заключается в том, что зеленый зеленый цвет появляется в полях даты/времени, если выбрано значение, затем один и тот же вход выбирается/задается фокус снова.

Существует ли решение JavaScript/jQuery, которое может срабатывать с помощью прослушивателя событий для решения этой проблемы и обеспечения появления зеленого тика? Или текстовый ввод необходимо физически ввести в поля даты/времени.

ответ

1

Попробуйте этот хак, должно работать:

$('.picker__input').on('change', function(){ 
    $(this).focus(); 
}) 

Надеется, что это помогает.

+0

Пожалуйста, могу ли я спросить, к чему в этом контексте относится $ (это)? Я пишу описание этого фрагмента кода для учебных целей. Правильно ли я говорю, что $ (this) относится к конкретному .picker__input, который имел событие изменения в этот конкретный момент? Другими словами, не цель $ (this) в этом случае использоваться как форма заполнителя, динамически выбирает конкретную .picker__input, с которой было связано? – user1554264

+0

Ваша помощь/разъяснение будет принята с благодарностью. – user1554264

+0

Привет @ user1554264, '$ (this)' ссылается на элемент с классом 'picker__input'. –

0

Вы используете два плагина для совместной работы. Попробуйте дать обратный вызов pickadate с просьбой повторно обработать поле:

$('#fscf_field2_12').pickadate({ 
    //... add this parameter 
    onClose: function() { 
     $('#fscf_field2_12').blur(); 
    }, 
    //... or this one 
    onSet: function() { 
     $('#fscf_field2_12').blur() 
    } 
}) 

Вы также можете проверить validateOnEvent метод с JQuery-Form-валидатора.

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