2011-09-26 82 views
5

是否有可能使用JQuery验证插件的数据属性。我目前使用的是课程名称,例如使用数据属性jQuery验证

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验证搬过来吧。

感谢

回答

1

我还没有使用的插件,但似乎没有成为一个内置的选项可以更改属性从那里获取的规则。但是,如果您查看线路767处的未压缩源,则会看到classRules方法。

在这种方法中,在行769有:

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

你可以尝试这种更改为:

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

至于说,我还没有测试这一点,但它似乎更符合逻辑和语义把这种东西放在一个数据属性中,而不是像插件所建议的那样默认。

+0

嗨大卫,我给你的建议去了,但我无法得到它的工作。谢谢 – Clawg

+0

更可能:$(element).data('validate'); – molokoloco

1

ASP.NET MVC 3整合了使用HTML5 data-属性的不显眼验证。 MVC 3框架中的文件jquery.validate.unobtrusive.js解析数据属性,并将规则添加到jquery.validate.js中。

您可以在this article中获得更多详情。

6

尝试使下列chages验证1.9.0。 我做了一些MODS的,所以我的行号可能会关闭,但在这里有云:

围绕LN 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属性到您所在领域:

<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作为使用中的示例。

+0

这真的很酷,但我认为你正在重新发明轮子。对于大多数主要平台,已经有不引人注目的验证生成器和解析器 – Milimetric

1

我知道这是旧的,但我只是偶然发现它寻找相关的东西。我想,因为没有被接受的答案,你可能仍然需要一个?无论如何,大卫真的接近:

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

这应该抓住你的数据验证属性的内容。从那里你应该能够解析或传递值,就像你使用类名所做的那样。

0

建议使用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/

+0

您是否可以更新此链接? – peater

+1

当然:https://spabuilder.wordpress.com/2012/09/26/some-things-ive-learned-about-jquery-unobtrusive-validation/ 还修复了上述评论中明显的错字(您不不再需要不显眼的部分) – ValGe