验证错误列表来自第二次提交/单击表单

时间:2016-10-03 14:13:21

标签: javascript jquery asp.net jquery-validate unobtrusive-validation

我正在使用带有jquery和jquery验证的ASP.NET MVC。

我创建了一个页面,其中包含一些条目名称和地址等...

在提交时单击我想验证我在视图模型中给出的详细信息作为必填字段。

所有运行正常,验证成功启动。

我想获取所需字段的所有错误列表。

我是这样的:

var validator = $("#formname").validate();

for (var i = 0; i < validator.errorList.length; i++) {
    console.log(validator.errorList[i].message);
}

这里所有运行正常,但我面临的问题是我第二次点击/提交时得到了错误列表,而不是第一次点击。

我希望首次点击/提交所有errorList。

为什么它会在第二次点击时出现我不明白?

请谁解决了这个问题或解决了这个问题,请帮我解决这个问题。

任何帮助将不胜感激。

我的代码示例:

 $('#formname').submit(function () {
    $.validator.unobtrusive.parse($('#formname'));
    var $form1 = $('#workoerderDetails');

//Here I try to get all the error list starts
    var validator = $("#formname").validate();

        for (var i = 0; i < validator.errorList.length; i++) {
            console.log(validator.errorList[i].message);
        }
//Here I try to get all the error list ends

    if ($form1.valid()) {
    //my code if no any validation fire
    }
    else{
    return false;
    }
        });

$ form1运行得很好,但我想从中获取所有错误列表,所以我使用验证器变量,我在for循环中得到所有错误列表,但它让我第二次提交/点击。

1 个答案:

答案 0 :(得分:0)

这不小心我不知道,但我正在回答第五个问题。

var settings = $.data($('#formname')[0], 'validator').settings;

             $("#formname").bind("invalid-form.validate", function (form, validator) {
                 var errors = validator.numberOfInvalids();
                 var message = "Please fix these " + errors + " errors." ;
                 if (validator.errorList.length > 0) {
                     for (var x = 0; x < validator.errorList.length; x++) {
                         message += "<br/>\u25CF " + validator.errorList[x].message;
                     }
                     $("#errorList").show();
                     $("#errorList").html("");
                     $("#errorList").html(message);
                 }
                 else {
                     $("#errorList").hide();
                     $("#errorList").html("");
                 }

             });

             settings.submitHandler = function (form) {
                 if (confirm("Are you sure you wish to submit"))
                     form.submit();
             };

感谢这篇精彩的文章codeproject

感谢所有回复非常快的用户。