我正在使用Jquery验证插件,我有一个带有“保存”,“提交”按钮的大表单。 我有两组按钮规则。
任何人都建议,如何发展这样?
Set1规则:
var rulesOne = { email : "required" .......}
Set2规则:
var rulesTwo = {city : "required" ..........}
$("#form1").validate({
ignore : '*:not([name]),:hidden',
rules : rules});
如果保存按钮
if(this.id == "personal_save"){
setOne rules test ?
else
// submit button (check all validations)
{
setTwo rules test ?
}
由于 普拉萨德
答案 0 :(得分:2)
使用此插件无法为表单的任何/所有部分动态启用/关闭验证。
但是,您可以随时使用the .rules()
method动态添加,删除或覆盖规则,从而为您提供类似的行为。
然后您可以使用the .valid()
method来测试表单。
将它们分别放在专用的click
事件处理程序中。
$(document).ready(function() {
// initialize the plugin
$("#form1").validate({
ignore : '*:not([name]),:hidden'
// no rules; rules are set dynamically below
});
// Save Button
$('#save_button').on('click', function() {
// dynamically set the rules
$('input[name="email"]').rules('add', {
required: true,
....
});
// remove all rules from the other fields
$('input[name="city"]').rules('remove');
// force a test of the form
$("#form1").valid();
});
// Submit Button
$('#submit_button').on('click', function() {
// dynamically set the rules
$('input[name="city"]').rules('add', {
required: true,
....
});
// remove all rules from the other fields
$('input[name="email"]').rules('remove');
// force a test of the form
$("#form1").valid();
});
});
概念证明DEMO:http://jsfiddle.net/x6YWM/
如果您有多个字段,可以通过在.ruleset1
和.ruleset2
上设置适当的类来简化这些操作。然后,您可以使用.rules()
方法将它们定位为一个组。请记住,如果选择器针对多个元素,则需要将它们包含在jQuery .each()
中...
$('.ruleset1').each(function() { // target multiple elements
$(this).rules('add', { // apply the rules to each
required: true,
....
});
});
答案 1 :(得分:0)
我遇到了同样的问题,经过大量的研究,我找到了解决方案。它包括使用JQuery.extend替换验证器设置中的rules属性。 我创建了一个基于@Sparky的jsfiddle。 http://jsfiddle.net/rWsLy/
$('#save_button').on('click', function () {
var settings = $("#form1").validate().settings;
// Modify validation settings
$.extend(settings, {
rules: {
field1: {
required: true,
},
},
});
// force a test of the form
$("#form1").valid();
});
我更喜欢这种方式,因为规则的指定方式与validate方法相同。我认为,以前的解决方案不会扩展。