1

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>

何らかの理由で、作成された FORM タグに (ページの読み込み後)

   novalidate="novalidate" 

包含。それがどこから来たのか、それが私の検証に干渉するかどうかはわかりません。

INPUT に INVALID という 1 文字を入力すると、プラグインは INPUT 要素に class="valid" を設定して反応します。つまり、何かが機能しています。

これを機能させることに加えて、検証結果に応じて入力要素 (主にボタン) を無効/有効にする方法を知る必要があります。私はinvalidHandlerについて知っていますが、有効な結果のハンドラーは何でしょうか? 入力中にすべての検証を行う必要があることに注意してください。

4

2 に答える 2

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

于 2013-07-30T13:34:42.177 に答える
0

submitHandler検証に成功したフォームに対してトリガーされるものであり、あなたが言ったように、invalidHandler検証に失敗したフォームに対してトリガーされるものです。

于 2013-07-30T15:22:04.897 に答える