2013-07-15 2 views
1

Я пытался использовать jquery.validate для проверки формы с полем даты в ней. Я могу сделать это проверить должным образом на размытие: добавить атрибут validateonblur в тех областях, где я хочу, чтобы сделать это:jquery.validate dateISO: Действительно ли это полезно?

 $("input[validateonblur]").blur(function() { 
      $(this.form).validate().element(this); 
     }); 

Но когда я отправить форму, проверку на тот момент только проверяет необходимые поля. Неважно, какой вид мусора в поле даты. Он полностью игнорирует атрибут dateISO, то ли я делаю это как атрибут в HTML ...

<input name="DOB" id="DOB" type="text" required dateISO="true" class="blah" /> 

... или вот так:

$("#MyForm").validate({ 
     rules: { 
      DOB: { 
       required: true, 
       dateISO: true 
      } 
     }); 

... или оба.

Кроме того, я заметил, что при отправке формы он отображает всплывающие/подсказки для ошибок, а когда я вызываю $ (this.form) .validate(). Element (this) ;, он указывает на ошибки совершенно другим способом, вставив метки в HTML. Но опять же, их dateISO documentation page имеет пример, который ведет себя совершенно по-другому, чем то, что я вижу: он проверяет фактические значения даты и делает свои ошибки в методах на форме submit. Зачем?! Они не дают никаких параметров, я нет. Почему у них разные результаты?

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

// UPDATE: I had a very poor understanding of jquery when I wrote this. 
alert(MyForm['validate']); // 'undefined' 

Является ли эта библиотека в годной к употреблению состоянии, или я тратя мое время?

+0

Всплывающие окна создаются вашим браузером, который, как я полагаю, является Chrome после отправки. Являются ли ваши требования все загруженными/вызванными по порядку? –

+0

Почему вы добавляете событие 'onblur' в свои поля? Плагин jQuery Validate уже имеет значение по умолчанию для 'onfocusout'. – Sparky

+0

@RobAdams - это многое объясняет - это даже больше, чем я понял! Вы правы, я просто удалил весь материал jquery.validate, и он все еще дал мне эти всплывающие окна. Что такое «требования»? Файлы .js, в которые я включаю? Я скопировал все это непосредственно из примера j.v, изменил пути для соответствия, и по крайней мере некоторые из кода j.v действительно работают, поэтому ... Dunno. –

ответ

0

Ответ оказывается на использование Parsley.js. В течение пяти минут после его загрузки у меня было удобное подтверждение.

Некоторые из пользовательских материалов проверки имеют некоторые ограничения (например, это странная проблема для генерации сообщений об ошибках «на лету», например (например, для обозначения понятных пользователем имен полей, если вы добавляете пользовательский валидатор, который сравнивает значения двух полей (UPDATE: Simple - вы можете создавать пользовательские сообщения об ошибках в каждом поле в HTML, конечно!))), но пока мне это очень нравится. Было тривиально написать специальный валидатор, который использует moment.js для проверки произвольных форматов дат, например.

0

Ваш код: alert(MyForm['valid']);

Что такое, что синтаксис?

Вы пробовали: alert($('#MyForm').valid());

DEMO: Цитата http://jsfiddle.net/bscTU/

OP:

Является ли эта библиотека в годной к употреблению состоянии, или я теряю время?

Это, безусловно, самый широко используемый плагин проверки для jQuery. Его разработчик является членом команд разработки jQuery и jQuery. Поэтому, несмотря на любые проблемы с пользователем или документацией, он очень прочный.

Почему вы добавляете событие onblur в свои полях? Плагин jQuery Validate уже имеет значение onfocusout validation. Демонстрация, показывающая onfocusout в действии: http://jsfiddle.net/WgyW5/

+0

Я пробовал звонить .valid() в обоих направлениях. Это не определено. Я добавил onblur, потому что ничего не проверено на размытие, пока я не сделал это. Я скопировал код из ответа на stackoverflow кому-то другому, у которого была такая же проблема. «Этот синтаксис» является одним из способов доступа к объекту объекта JS. После загрузки страницы в IE и Chrome любой элемент с атрибутом ID определяется в пространстве имен DOM как его идентификатор. У меня есть

...
в HTML и во время возиться с jquery.validate, я лениво полагался на эту функцию вместо более безопасного вызова getElementById() для всего. –

+0

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

+0

Нет, это тоже не работает. –

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