0

jeditable プラグインを使用して jquery 検証を実装しようとしています。これは、検証を除いて正常に機能する私の元のコードです。

 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"      type="text/javascript"></script>
 <script src="../../Scripts/jquery.jeditable.js" type="text/javascript"></script>
 <script src="../../Scripts/jquery.ui.datepicker.js" type="text/javascript"></script>



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

     $(".display-label").editable("/Course/RubricsEdit");

     $(".text").editable("/Course/RubricsEdit",
                    {
                        submitdata: {
                            DepartmentId: function () {
                                return $("#DepartmentId").val();
                            },
                            RecordType: "DEPARTMENT"
                        }
                    });

それから私はこれを試しました:

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

       $(".display-label").editable("/Course/RubricsEdit");

       $(".text").editable("/Course/RubricsEdit",
                    {
                        submitdata: {
                            DepartmentId: function () {
                                return $("#DepartmentId").val();
                            },
                            RecordType: "DEPARTMENT"
                        }
                    });

   $(".text").editable("/Course/RubricsEdit", {
   submitdata: function (settings, td) {
    var input = $(td).find('input');
    $(this).validate({
        rules: {
            'nameofinput': {
                number: true
            }
        },
        messages: {
            'actionItemEntity.name': {
                number: 'Only numbers are allowed'

            }

        }
    })

    return ($(this).valid());
     }
 });


 });
</script> 

まだ動作しますが、検証は行われません.. jeditable プラグインで検証を機能させる方法はありますか?

更新:だから私はこれを試しました:

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





     $(this).validate({
         rules: {
             submitdata: {
                 number: true
             }
         },
         messages: {
             submitdata: {
                 number: 'Only numbers are allowed'
             }

         }
     });





     $(".display-label").editable("/Course/RubricsEdit");

     $(".text").editable("/Course/RubricsEdit",
                    {
                        submitdata: {
                            DepartmentId: function () {
                                return $("#DepartmentId").val();
                            },
                            RecordType: "DEPARTMENT"
                        }
                    });



 });
</script> 

…そしてエラーメッセージが表示されました:

Microsoft JScript ランタイム エラー: オブジェクトはプロパティまたはメソッド 'validate' をサポートしていません。何が欠けている可能性がありますか?

4

2 に答える 2

0

あなたのコードについて:

$(".text").editable("/Course/RubricsEdit", {
   submitdata: function (settings, td) {
    var input = $(td).find('input');
    $(this).validate({ // <-- this is in the wrong place
        rules: {
            'nameofinput': {
                number: true
            }
        },
        messages: {
            'actionItemEntity.name': {
                number: 'Only numbers are allowed'

            }

        }
    })

    return ($(this).valid());
     }
 });

問題の一部は、jQuery Validation をinput使用してそれぞれに手動で適用しようとしていることです.validate()

.validate()各フィールドを手動で検証するためではなく、フォームでプラグインを初期化する準備ができている DOM 内で一度だけ使用することになっています。プラグインは、すべてのフィールド検証を自動的に処理します。

.valid()を初期化した後 .validate()、フォームで検証テストを強制したり、(フォーム全体の) 結果の対応するブール値を返すために使用できます。

また、入力の名前が対応する内の名前と'nameofinput'一致しないことにも気付きました。オーバーライドしようとしている対応するメッセージである場合、これらは同じでなければなりません。(入力にピリオドや括弧などの特殊文字が含まれている場合にのみ、入力を引用符で囲む必要があります。 )'actionItemEntity.name'messages: {}name

軌道に戻すには、次のようなものがあります。

$(document).ready(function() {

    $('#yourform').validate({
        rules: {
            nameofinput: {
                number: true
            }
        },
        messages: {
            nameofinput: {
                number: 'Only numbers are allowed'
            }

        }
    });

});

簡単なデモ: http://jsfiddle.net/Hr3bB/

于 2013-02-06T16:05:58.720 に答える
0

独自の検証ルールを手動で ( を呼び出して$(this).validate({...}) 記述しようとしている場合は、目立たない検証を使用できなくなりました。jquery.validate.unobtrusive.min.jsスクリプトはもう役に立たないので、削除してください。目立たない検証の全体的なポイントは、ASP.NET MVC ヘルパーがモデル プロパティを検査し、それらが検証属性 ( など) で装飾されている場合、スクリプトが動的に登録するために使用される入力要素にRequired対応する HTML5属性を発行することです。内の検証ルール。独自のルールでプラグインを個別に使用する場合、目立たない検証を使用しないでください。両方が一緒に機能しないためです。data-*jquery.validate.unobtrusive.min.jsjQuery.validate

于 2013-02-06T06:50:46.203 に答える