ASP.NET vs Jquery.Validation

时间:2013-07-30 12:28:16

标签: jquery asp.net validation

我正在尝试配置valication插件来执行ASP.NET生成表单的验证:

   <script type="text/javascript">
    $(document).ready(function () {

        $("#aspnetForm").validate({
            rules: {
                "<%=ProjectName.ClientID%>": { required: true, minlength: 8 }
            },
            messages: {
                "<%=ProjectName.ClientID%>": { requred: "can not be empty", minlength: "type at least 8 chars" }

            },
            invalidHandler:
             function (form, validator) {
                 alert('validation failed!');
             },
            errorLabelContainer: $("#alert")
        });
    });
</script>

HTML看起来像这样:

 <form name="aspnetForm" method="post" action="CreateProject.aspx"  
 onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_ShutUpPostbackButton')" 
 id="aspnetForm" enctype="MULTIPART/FORM-DATA">

 <input id="ctl00_JQueryContent_ProjectName" type="text" style="width:99%;" maxlength="50" name="ctl00$JQueryContent$ProjectName">


 </form>

出于某种原因,aformenetioned FORM标签有(加载页面后)

   novalidate="novalidate" 

夹杂物。我不知道它来自哪里,如果它干扰了我的验证。

如果我在INPUT中键入INVALID一个字母,插件会通过将class =“valid”设置为INPUT元素来做出反应,也就是说,某些内容正在运行。

除了让它工作之外,我还需要知道如何根据验证结果禁用/启用输入元素(主要是按钮)。我知道invalidHandler,但是有效结果的处理程序是什么?请注意,我需要在打字时进行所有验证。

2 个答案:

答案 0 :(得分:0)

在HTML5验证的情况下,此属性由jquery.validate插件添加。它位于jquery.validate的源代码(第32-33行)中:

// Add novalidate tag if HTML5.
this.attr( "novalidate", "novalidate" );

您可以删除此属性。看看这个讨论:http://forum.jquery.com/topic/disable-jquery-validate-when-html5-form-validation-is-present

答案 1 :(得分:0)

submitHandler是为成功验证的表单触发的内容,正如您所说,invalidHandler表示未成功验证的表单。