使用jquery自定义验证显示验证摘要

时间:2014-05-19 07:58:53

标签: jquery asp.net-mvc asp.net-mvc-4 unobtrusive-validation

我在asp.net MVC 4 razor视图中有一个表单:

  @{Html.EnableClientValidation(true);}
  @using (Html.BeginForm("Register", "Account", FormMethod.Post, new { id = "register" }))
  {
       <p>@Html.ValidationSummary(false)</p>
       @Html.AntiForgeryToken()

       // different controls here

      <button id="btnRegister" class="btn btn-red-splash s3 hidden" onclick="return GetData();" type="submit">REGISTER</button>
  }

我正在为按钮点击下拉列表进行自定义验证

 function GetData() {
     var IsFormValid = $('form[id=register]').valid();
        return Validate() && IsFormValid;
    }

和验证程序在这里:

 function Validate() {

        var value = $('#ddlAreaID').val();
        var container = $('form#register').find("[data-valmsg-summary=true]");
        if (container == null) {
            $("form#register").append("<div class='validation-summary-errors'><ul>  </ul></div>");
        }

        if (value != "0") {
            if ($('.validation-summary-errors ul li').hasClass('area'))
                $('.validation-summary-errors ul li[class=area]').remove();
            $('#ddlAreaID').addClass('valid').removeClass('input-validation-error');

            return true;
        } else if (value == "0") {

            if (!$('.validation-summary-errors ul li').hasClass('area'))
                $('.validation-summary-errors ul').append('<li class="area">Area must be selected</li>');

            $('#ddlAreaID').addClass('input-validation-error').removeClass('valid');
            return false;
        }
}

我正在创建验证摘要标记(如果所有控件都有效,那么验证摘要将不会出现,我需要创建它)如果它不存在并在ul中添加li元素。但是如果未选择区域下拉列表,则返回false,但不显示validaion摘要(如果所有其他控件都具有所需值)。

这里是生成的标记:

<div class="validation-summary-valid" data-valmsg-summary="true"><ul><li style="display:none"></li>
</ul></div>

请建议如何修复它

0 个答案:

没有答案