我有一个表格,里面有一些div块。所有的div都有它们的字段和按钮。在单击按钮时,我只需要验证div(按钮的父),并异步地向服务器提交一些字段。一切都很好,但不是验证。我用JQuery验证插件。在我看来,我不能写这样的代码:
<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:找到了一个解决方案:将几个表单放在主表单中。每小时一次。但你觉得它很脏。
最后,我从这个问题中获得了答案,但做了以下更改:
我在整个表单上调用validate()方法,在document.ready中的某个地方。作为验证选项,我为所有需要验证的控件添加规则(它们作为组嵌套在某些divs中)。我在文件中声明的消息/错误位置/成功,在该文件中,我使用单击该div中的按钮,其中要验证的控件是嵌套的。为了验证我使用的div:
var validator = $("#topUserProfile").validate(userProfileGeneralValidator);
// Validate and save general information
if (!validator.form()) {
return;
}其中,#topUserProfile是包含控件的div的名称;userProfileGeneralValidator是包含其他验证选项(消息/位置/等)的变量。谢谢你们帮了我。
发布于 2012-12-11 17:27:06
对于这个需求,我使用的是将多个元素传递给jquery 有效()方法,例如
$('#testdiv :input').valid()如果您只调用$('#testdiv').valid(),这是行不通的,但是使用:输入选择器,调用将告诉您jquery包装集中的所有表单元素是否有效。
发布于 2012-12-11 14:59:25
我以前见过这种情况,但最快的方法是创建一个表单并使用一个.validate调用初始化整个事件。然后,如果有验证的子案例,则使用.valid()方法针对单个元素。在这里阅读更多关于这一点的信息:http://docs.jquery.com/Plugins/Validation/valid
假设#txtOldPass在#form1 1中,则如下所示:
$("#form1").validate();
$("button").click(function(e) {
e.preventDefault();
alert("Valid: " + $("#txtOldPass").valid());
});https://stackoverflow.com/questions/13821067
复制相似问题