2013-03-25 5 views
1

У меня возникли проблемы с проверкой jQuery при использовании jQuery mobile datebox.jquery validate with jquery mobile datebox (mobiscroll)

У меня есть набор проверки на:

onkeyup: false 

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

Проблема заключается в том, что когда я устанавливаю дату с помощью выбора даты, она не запускает это событие, поэтому, если у меня есть дата-поле с датой «обязательно» и оно заполнено, сообщение об ошибке все еще сохраняется показали ...

Edit:

Вот моя скрипка:

http://jsfiddle.net/3v2ZV/

HTML

<form id="my_form" method="post"> 
    <input name="name" id="full-name" data-theme="a" placeholder="Name" class="required"> 
    <input name="athlete_datebox" id="athlete_datebox" data-theme="a" placeholder="Date of Birth" class="required"> 
    <input type="submit" value="submit"> 
</form> 

JS

$(document).ready(function() { 
    $('#my_form').validate({ 
     onkeyup: true 
    }); 
    $('#athlete_datebox').mobiscroll().date({ 
     theme: 'jqm', 
     display: 'modal', 
     mode: 'clickpick', 
     dateOrder: 'mmD ddyy', 
     dateFormat: 'yy-M-dd', 
     endYear: 2034 
    }); 
    $('#my_form').on('submit', function (event) { 
     event.stopPropagation(); 
     event.preventDefault(); 
     if ($('#my_form').valid()) { 
      alert('is valid'); 
     } 
    }); 
}) 

Если вы нажмете «отправить», прежде чем заполнять ничего, вы видите, что оба поля обязательны для заполнения. Однако после заполнения даты с помощью выбора даты для раскрутки, поле по-прежнему отображается как требуется, даже если оно не пустое.

+0

Вашего кодом _por favor_;) – Omar

+0

Вы просто выключены 'onkeyup'. Событие 'onfocusout' - это другой вариант и по умолчанию, если вы не отключите его. Вам нужно будет показать весь ваш соответствующий код, включая datepicker. – Sparky

ответ

4

"Я мой проверки устанавливается:

onkeyup: false

Что я считаю, запускает проверку на фокус/размытия (вкладка) события вместо этого."

Вы просто отключили событие onkeyup. Событие onfocusout - это совершенно другой вариант и «включено» по умолчанию, если вы не отключите его.

Я не могу дать вам более подробное решение, так как вы не указали код.

Однако описанную проблему можно решить, используя функцию обратного вызова, встроенную в ваш выбор даты (какой?). Что-то вроде «on change» или «on select», если оно доступно.

Внутри функции обратного вызова вам нужно будет позвонить the jQuery Validate plugin's .element() method, который программно запускает проверку только одного элемента.

$('#myform').validate().element('#myelement'); 

Если он не имеет функцию обратного вызова, вы можете попробовать что-то вроде этого, который использует jQuery change event элемента.

$('#myelement').on('change', function() { 
    $('#myform').validate().element('#myelement'); 
}); 

EDIT:

Что касается кода в вашем jsFiddle.

1) Не размещайте полуколоны после опций в пределах validate. Это нарушает плагин.

2) Не используйте обработчик submit, чтобы проверить, является ли форма действительной. Встроенный submitHandler callback уже делает это.

3) Ваш </form> тег пишется </for>

скрипку OP с правками: http://jsfiddle.net/3v2ZV/4/

+0

Я исправил некоторые из этих вещей, но сегодня он не сохраняет jsfiddle для меня (т.е. я изменил форму и ударил обновление, но не кубик?) – redconservatory

+2

@redconservatory, он работает здесь: http://jsfiddle.net/3v2ZV/ 4/ – Sparky

+0

Получил это ... спасибо! – redconservatory

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

  • Нет связанных вопросов^_^