【发布时间】:2012-12-11 13:05:36
【问题描述】:
我有一个表单,里面有一些 div 块。所有的 div 都有它们的字段和按钮。单击按钮时,我只需要验证那个 div(按钮的父级)并将一些字段异步提交到服务器。一切正常,但不是验证。我使用JQuery validation plugin。如我所见,我无法编写这样的代码:
<script type="text/javascript">
//.......
// Validator for general information
var userProfileGeneralValidator = $("#form1").validate({
onkeyup: false,
onclick: false,
onfocusout: false,
rules: {
txtPrivateNumber: {
required: true
}
},
messages: {
txtPrivateNumber: {
required: "Required!"
}
},
errorPlacement: function (error, element) {
if (error.text() != "") {
}
},
success: function (lbl) {
}
});
// Validator for password information
var userPasswordValidator = $("#form1").validate({
onkeyup: false,
onclick: false,
onfocusout: false,
rules: {
txtOldPass: {
required: true,
minlength: 5
}
},
messages: {
txtOldPass: {
required: "Required!"
}
},
errorPlacement: function (error, element) {
if (error.text() != "") {
}
},
success: function (lbl) {
}
});
</script>
然后单击一个按钮调用userPasswordValidator.form(),单击另一个按钮调用userProfileGeneralValidator.form()。是否有任何技巧可以实现我的目标:使用 jquery 分别验证几个表单部分?
PS:找到了一个解决方案:将多个表单放在主表单中。每个 div 一个。但认为它很脏。
使用我使用的解决方案进行更新: 最后我从这个问题中得到了答案,但做了以下更改:
我在 document.ready 的某处调用整个表单上的validate() 方法。作为验证选项,我为我需要验证的所有控件添加规则(它们嵌套在一些divs 中作为组)。 Messages/errorPositions/Success 我在文件中声明,我在其中单击该 div 中的按钮,其中嵌套了要验证的控件。并验证我使用的那个 div:
var validator = $("#topUserProfile").validate(userProfileGeneralValidator);
// Validate and save general information
if (!validator.form()) {
return;
}
#topUserProfile 是包含控件的 div 的名称; userProfileGeneralValidator 是一个变量,包含用于验证的附加选项(消息/位置/等)。谢谢大家帮忙。
【问题讨论】:
标签: jquery jquery-validate forms