0

我正在使用带有不显眼验证的 Ajax.BeginForm。我想给用户一个选项,用最少数量的验证字段(可能为零)保存数据,但允许在空时保存一些必填字段。

我认为我的要求是:

  • 向提交按钮添加事件处理程序
  • 手动执行验证
  • 确定哪些字段由于为空而未通过验证
  • 确定哪些字段未通过验证数据有误

我可以通过在“文档就绪”中添加以下内容来捕获提交事件并验证表单

$(document).ready(function () {

    $('#submit-11').click(function () {
        if (!$("#form0").valid()) {
            alert("woops");
            return false;
        }
        return true;
    });

我现在的问题是如何识别哪些字段验证失败以及失败的原因。

我在谷歌上找不到任何东西(尽管这可能是我的搜索技能的一个功能,而不是问题所在。)

提前致谢。

4

1 回答 1

1

你有没有尝试过

event.preventDefault();

只是在提交点击之后? http://api.jquery.com/event.preventDefault/

现在关于你更大的问题。我认为您可以使用 jquery 完成所有这些操作,这是一个示例

$(document).ready(function () {
    //form validation rules, including custom rules you'd like
    $("#form").validate({
        rules: {
            fieldOne: { required: true },
            fieldTwo: { required: function () { /*custom validation*/return true; } }
        },
        messages: {
            fieldOne: { required: "error" },
            fieldTwo: { required: "error" }
        }
    });
    //handle submit click
    $("#btnSubmit").click(function (event) {
        event.preventDefault(); //stops form from submitting immediately 
        if ($("#form").valid()) { //perform validation 
            //submit your data if valid
            $.post("/your/action", $form.serialize(), function (data) { 
                //do something with the result
            });
        }
    });

});

更新:所以也许你应该这样做,当你将验证处理程序添加到表单时,你可以实现 submitHandler 和 invalidHandler。现在你真正应该看的是 invalidHandler

        $(document).ready(function(){
            $("#form").validate({
                rules : {
                    field : {required : true}                   
                },
                messages : {
                    field : {required : ""}                 
                },
                submitHandler: function(form) {                     
                    form.submit(); //if all is good
                }, 
                invalidHandler: function(form, validator){
                    console.log(validator.errorList); //if something went wrong
                }
            });

此函数接收验证器,该验证器依次具有包含所有失败字段(和消息)的 errorList。例如,使用 chrome 的开发人员工具测试此代码,您将看到 errorList 中的内容。

于 2012-10-09T14:19:52.327 回答