10

我一直试图弄清楚这一点,我知道只要按钮是提交类型,就可以在表单中触发验证。但是我在视图上有一些其他选项卡,当我使用提交时,它会导致回发并返回到第一个选项卡。我不希望这种情况发生,所以我将验证放在一个函数中,并将按钮类型更改为按钮并删除了表单标签,并尝试在按钮单击事件上调用验证函数并且它没有触发。这可以在不使用表单标签的情况下完成吗?

我的代码是这样的...

    $(document).ready(function () {
    $("#btnUpdateModerator").click(function () {
        ValidateIt();
    });
    ValidateIt();
});
function ValidateIt() {
    var validator = $("#Users").bootstrapValidator({
        feedbackIcons: {
            valid: "glyphicon glyphicon-ok",
            invalid: "glyphicon glyphicon-remove",
            validating: "glyphicon glyphicon-refresh"
        },
        fields: {
            DealerUsername: {
                message: "Username is required",
                validators: {
                    notEmpty: {
                        message: "Please Provide Username"
                    }
                }
            },
            email: {
                message: "Email address is required",
                validators: {
                    notEmpty: {
                        message: "Please provide Email address"
                    },
                    emailAddress: {
                        message: "Email address was invalid"
                    }
                }
            },
            password: {
                validators: {
                    notEmpty: {
                        message: "Password is required"
                    },
                    stringLength: {
                        min: 6,
                        message: "Password must be at least 6 characters long"
                    },
                    different: {
                        field: "email",
                        message: "Email and Password cannot match"
                    }
                }
            },
            confirmPassword: {
                validators: {
                    notEmpty: {
                        message: "Confirm Password is required"
                    },
                    identical: {
                        field: "password",
                        message: "Password and Confirmation Password must match"
                    }
                }
            },
            department: {
                validators: {
                    notEmpty: {
                        message: "Department is Required"
                    }
                }
            }
        }
    });
}
4

2 回答 2

15

我认为您需要保留表单元素,但将按钮类型设置为“按钮”而不是“提交”。然后,您可以使用引导验证器的“验证”方法手动验证表单。

假设您的表单元素具有id“用户”,您应该能够将代码更改为:

$(document).ready(function () {
    $("#btnUpdateModerator").click(function () {
        $('#Users').bootstrapValidator('validate');
    });
    ValidateIt();
});

注意:ValidateIt()您编写的函数不会验证表单,它会在表单上设置验证器。


注意:我认为API文档位于:http: //bv.doc.javake.cn/api/


在您对进行 ajax 调用发表评论后更新:

如果您想在单击按钮时进行 ajax 调用,但前提是表单有效,我相信您会执行以下操作:

    $("#btnUpdateModerator").click(function () {
        $('#Users').bootstrapValidator('validate');
        if ($('#Users').bootstrapValidator('isValid')) {
            // Make the ajax call here.
        }
    });

另一种写法是:

    $("#btnUpdateModerator").click(function () {
        var validator = $('#Users').data('bootstrapValidator');
        validator.validate();
        if (validator.isValid()) {
            // Make the ajax call here.
        }
    });
于 2015-09-05T23:44:10.403 回答
1

我相信引导验证器将自身绑定到表单的 submit() 方法,因此将其移动到函数中实际上对您没有帮助。但是,您可以拦截表单的提交方法,并且在您想要它之前不允许它提交。

$("#myForm").submit(function(e){
    e.preventDefault(); // <-- prevents the form from submitting
    // do stuff
    this.submit() // <-- send it through
});
于 2015-09-05T23:39:12.593 回答