Использование атрибутов данных с jquery validate - PullRequest
5 голосов
/ 26 сентября 2011

Возможно ли использовать атрибуты данных с плагином JQuery Validate.В настоящее время я использую имя класса, например,

class="{required:true, messages:{required:'You must choose a site.'}}"` 

, но мне нужно использовать атрибут данных, например,

data-validate="{required:true, messages:{required:'You must choose a site.'}}"`

Входные данные могут иметь более одного атрибута данных, связанного с ним, который не будетсвязанные с проверкой, например

<input name="txt_txt001" type="text" maxlength="30" id="txt_txt001" class= "     
{required:true, messages:{required:'This field is required.'} }" data-
children="ddl_txt007,ddl_txt008" data-optionGroup="1" data-optionGroupParent=""  />

Я знаю, что плагин кетчупа предлагает это, но не хочу переходить к нему, так как я приложил массу усилий для настройки страницы с помощью JQuery Validate.

Спасибо

Ответы [ 5 ]

6 голосов
/ 18 мая 2012

Попробуйте выполнить следующие проверки для проверки 1.9.0. Я сделал несколько модов, так что мои номера строк могут быть выключены, но здесь идет:

Около 149:

var data = $.validator.normalizeRules(
    $.extend(
        {},
        $.validator.metadataRules(element),
        $.validator.classRules(element),
        $.validator.dataRules(element), // add this
        $.validator.attributeRules(element),
        $.validator.staticRules(element)
    ), element);

Добавьте это после classRules вокруг ln 782:

// pretty much steal everything from the class based settings
dataRules: function(element) {
    var rules = {};
    var classes = $(element).data("validation");
    classes && $.each(classes.split(' '), function() {
        if (this in $.validator.classRuleSettings) {
            $.extend(rules, $.validator.classRuleSettings[this]);
        }
    });
    return rules;
},

Добавьте любые дополнительные валидаторы к правилам класса:

jQuery.validator.addClassRules({
    phone: {
        phoneUS: true
    },
    zipcode: {
        zipcode: true
    },
    notFirstSelect: {
        notFirstSelect : true
    }
});

Затем добавьте атрибут data-validation в свои поля for:

<input type="text" data-validation="zipcode required" maxlength="10" class="inputText med" value="" name="zip" id="zip">

Это сработало очень хорошо для меня. Проверьте: http://www.roomandboard.com/rnb/business_interiors/contactus/send.do для примера использования этого.

1 голос
/ 10 января 2013

Я знаю, что это старо, но я наткнулся на это в поисках чего-то связанного.Я понял, так как нет принятого ответа, который вам все еще может понадобиться?В любом случае, Дэвид был действительно близко:

var classes = $(element).data("validate");

Это должно захватить содержимое вашего атрибута проверки данных.Оттуда вы сможете анализировать или передавать значение так же, как вы это делали с именем класса.

1 голос
/ 27 сентября 2011

ASP.NET MVC 3 включает в себя ненавязчивую проверку с использованием атрибутов HTML5 data-. Файл jquery.validate.unobtrusive.js в платформе MVC 3 анализирует атрибуты данных и добавляет правила в jquery.validate.js.

Вы можете получить более подробную информацию в этой статье .

1 голос
/ 26 сентября 2011

Я не использовал плагин, но, похоже, нет встроенной опции для изменения атрибута, из которого он выбирает правила.Но если вы посмотрите на несжатый источник в строке 767, вы увидите метод classRules.

В этом методе в строке 769 есть:

var classes = $(element).attr('class');

Вы можете попытаться изменить это на:

var classes = $(element).attr('data-validate');

Как я уже говорил, я не проверял это, хотя кажется более логичным и семантическим помещать подобные вещи в атрибут данных, чем в класс, как предлагает плагин по умолчанию.

0 голосов
/ 25 февраля 2014

Рекомендую использовать data-attriubtes. Вам больше не нужен jquery.validate.unobtrusive.js. Начиная с версии 1.11.0 в jquery.validate.js это включено по умолчанию. Синтаксис остается неизменным, посмотрите на примеры здесь: http://denverdeveloper.wordpress.com/2012/09/26/some-things-ive-learned-about-jquery-unobtrusive-validation/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...