【发布时间】:2015-01-21 16:38:09
【问题描述】:
我有一个表单和 3 个输入类型的提交按钮:返回、发送、搜索。 “返回”不应该验证表单并带我回去,“发送”应该只验证电子邮件字段,“搜索”应该验证名字、姓氏和邮政编码。我一直在研究这个,但对我来说更新/分配规则部分似乎有点冗长。也许有一种方法可以做得更好。我有一个工作 jsfiddle:http://jsfiddle.net/1u7tb48L/ 这是我的javascript:
$("#formValConfirmIdEmail").validate({
debug: true,
rules: {
emailLogin: {
required: true
},
firstName: {
required: true
},
lastName: {
required: true
},
postCode: {
required: true
}
},
messages: {
emailLogin: {
required: 'Required'
},
firstName: {
required: 'Required'
},
lastName: {
required: 'Required'
},
postCode: {
required: 'Required'
}
},
errorPlacement: function (error, element) {
error.insertAfter(element);
}
});
// Update rules for send button
$('#formValConfirmIdEmail #sendBtn').on('click', function () {
$('#emailLogin').rules('add', {
required: true
});
$('#firstName').rules('remove');
$('#lastName').rules('remove');
$('#postCode').rules('remove');
$('#firstName, #lastName, #postCode').closest('.control-group').removeClass('error');
$('#formValConfirmIdEmail').valid();
});
// Update rules for search button
$('#formValConfirmIdEmail #searchBtn').on('click', function () {
$('#firstName').rules('add', {
required: true
});
$('#lastName').rules('add', {
required: true
});
$('#postCode').rules('add', {
required: true
});
$('#emailLogin').rules('remove');
$('#emailLogin').closest('.control-group').removeClass('error');
$('#formValConfirmIdEmail').valid();
});
感谢您的帮助!
【问题讨论】:
-
您已经描述了您的要求,但您没有解释问题。如果您只是询问另一种方法来做到这一点,那么不是真的。除了使用
rules()方法切换到add和remove规则之外,没有其他方法可以切换验证。 -
您可以使用 jQuery
.each()并稍微组合选择器:jsfiddle.net/1u7tb48L/2 -
是的,我正在考虑使用 each()。我尝试使用一个数组来存储所有元素,然后使用 each(),但它只适用于数组的第一个元素。陌生人
-
并不奇怪;它有点记录。使用此插件的任何方法时,仅考虑第一个匹配的元素。所以解决方法是使用
.each()。检查my jsFiddle。
标签: jquery forms jquery-validate submit-button