我有一个表单里面有一些div块。所有的div都有他们的字段和按钮。在按钮单击我需要验证只有THAT 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一个。但想想它的脏
使用解决方案的UPDATE:最后我从这个问题中得到了答案,但做了以下更改:
我在document.ready中的某个地方调用整个表单上的validate()
方法。作为验证选项,我为需要验证的所有控件添加规则(它们作为组嵌套在一些divs
中)。消息/ errorPositions / Success我在文件中声明,我在那里使用点击该div中的按钮,其中要嵌套的控件是嵌套的。并验证我使用的div:
var validator = $("#topUserProfile").validate(userProfileGeneralValidator);
// Validate and save general information
if (!validator.form()) {
return;
}
其中#topUserProfile
是包含控件的div的名称; userProfileGeneralValidator
是变量,包含验证的其他选项(消息/位置/等)。谢谢大家,谁帮忙。
答案 0 :(得分:2)
我用于此要求的是将多个元素传递给jquery validate plugin valid()方法,例如此方法的一些变体
$('#testdiv :input').valid()
如果你只是调用$('#testdiv')。valid()这将不起作用,但是使用:input选择器,调用将告诉你jquery包装集中的所有表单元素是否有效。
答案 1 :(得分:1)
我以前见过这个,但最快的方法是创建一个表单并用一个.validate调用初始化整个表单。然后,如果您有验证的子案例,请使用.valid()方法的单个元素定位。在这里阅读更多相关信息: http://docs.jquery.com/Plugins/Validation/valid
假设#txtOldPass位于#form1:
内,它的外观如何$("#form1").validate();
$("button").click(function(e) {
e.preventDefault();
alert("Valid: " + $("#txtOldPass").valid());
});