4

Jquery Mobile/asp.net mvc4 アプリケーションがあります。最初のページの後、後続のページは Ajax 要求を使用して Jquery モバイルによって呼び出されます。ここで、JQuery バリデーター プラグインを使用してフォームの検証を実行しました。検証は初回 (つまり、ajax 呼び出しを使用して読み込まれたとき) は正常に機能していますが、ページを更新/再読み込みすると、検証が機能しません。なぜこれが起こっているのですか?これはモバイル Web アプリケーションであるため、ユーザーがページを更新する可能性があります。

これは私が使用した検証コードです:

<script type="text/javascript">    
// jquery form validation function
$(function () {
    $("#permissionRequestForm").validate({
        errorPlacement: function (error, element) {
            if (element.attr("name") === "fromTimeHH" || element.attr("name") === "toTimeHH" || element.attr("name") === "fromTimeMM" || element.attr("name") === "toTimeMM") {
                error.insertAfter($(element).parent());
            } else {
                error.insertAfter(element);
            }
        },

        //custom validation messages
        messages: {
            fromDate: "Choose From Date",
            toDate: " Choose To Date",
            fromTimeHH: "Choose From Time",
            fromTimeMM: "",
            toTimeHH: "Choose To Time",
            toTimeMM: "",
            permissionTypeOne: "Select Permission Type",
            permissionTypeTwo: "Select Permission Type",
            approverList: "Select Approver",
            reasonLeave: "Enter a Valid Reason"
        }
    });
});

4

1 に答える 1

3

コードサンプルが提供されていないため、これは大まかな推測ですが、次のものを使用したと思います。

$(document).ready(function() {    

});

バリデータプラグインを初期化するには、jquery の一般的な方法です。残念ながらドキュメントレディはjQuery Mobileでは使えません。

また、使用しないでください:

$(function () {

});

jQuery モバイルで。

Validator プラグインは、次のようにページ表示イベントで初期化する必要があります。

$('#index').live('pageshow',function(e,data){    
    $.validator.addMethod("valueNotEquals", function(value, element, arg){
        return arg != value;
    }, "");

    $("#form1").validate({
        rules: {
            select_list : {valueNotEquals: "default"},  
        },
        messages: {  
            select_list : { valueNotEquals: "You must select a value" }
        },        
        submitHandler: function(form) {
            alert($('#form1').valid());
            form.submit();
        }
    });   
});

そして、ここに実際の例があります: http://jsfiddle.net/Gajotres/AZPhK/ . 何度閉じて最初のページに戻っても、ページが表示されるたびにバリデーターが初期化されます。

編集 :

マルチ HTML ページ形式を使用している場合は、このコードを必要なページにのみ配置するか、新しい js ファイルを作成し、このコード (すべてのカスタム js コード) をその中に配置して、すべての html ページで共有します。

于 2013-01-18T11:28:29.130 に答える