首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个表单使用几个验证器进行JQuery验证

问每个表单使用几个验证器进行JQuery验证
EN

Stack Overflow用户
提问于 2012-12-11 13:05:36
回答 2查看 1.5K关注 0票数 0

我有一个表格,里面有一些div块。所有的div都有它们的字段和按钮。在单击按钮时,我只需要验证div(按钮的父),并异步地向服务器提交一些字段。一切都很好,但不是验证。我用JQuery验证插件。在我看来,我不能写这样的代码:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
var validator = $("#topUserProfile").validate(userProfileGeneralValidator);
// Validate and save general information
if (!validator.form()) {

    return;
}

其中,#topUserProfile是包含控件的div的名称;userProfileGeneralValidator是包含其他验证选项(消息/位置/等)的变量。谢谢你们帮了我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-11 17:27:06

对于这个需求,我使用的是将多个元素传递给jquery 有效()方法,例如

代码语言:javascript
复制
$('#testdiv :input').valid()

如果您只调用$('#testdiv').valid(),这是行不通的,但是使用:输入选择器,调用将告诉您jquery包装集中的所有表单元素是否有效。

票数 3
EN

Stack Overflow用户

发布于 2012-12-11 14:59:25

我以前见过这种情况,但最快的方法是创建一个表单并使用一个.validate调用初始化整个事件。然后,如果有验证的子案例,则使用.valid()方法针对单个元素。在这里阅读更多关于这一点的信息:http://docs.jquery.com/Plugins/Validation/valid

假设#txtOldPass在#form1 1中,则如下所示:

代码语言:javascript
复制
$("#form1").validate();
$("button").click(function(e) {
  e.preventDefault();
  alert("Valid: " + $("#txtOldPass").valid());
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13821067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档