1

asp MVC3 と MVC 控えめな検証を使用してフォームを作成しています。検証が失敗した後、jquery 関数の一部が再度実行されないことに気付きました。たとえば、テキストボックスに日付ピッカーとテキストボックスに電話番号形式のマスクがあり、どちらも最初は完全に実行されますが、フォームが検証に失敗した場合、それらは「リロード」しません。

それで、jqueryを変更する方法を探しているので、もう一度実行します。両方の機能は現在「ドキュメントの準備ができている」ため、検証が失敗した後にページがリロードされないと推測しているため、機能しません。たとえば、電話番号マスクは次のとおりです。

$(document).ready(function () {
    $("#PersonModel_PhoneNumber").mask("(999) 999-9999");
});

これは、追加された日付ピッカーです。

   $(document).ready(function () {
        $("#PersonModel_DateofBirth").datepicker
            ({ dateFormat: 'mm/dd/yy',
                changeMonth: true,
                changeYear: true,
                yearRange: '-100y:c+nn',
                maxDate: '-1d',
                onClose: function ageVerification() {
                    var value = document.getElementById('PersonModel_DateofBirth').value;
                    var birthDate = new Date(document.getElementById('PersonModel_DateofBirth').value);
                    var currDate = new Date();
                    var yearDifferential = currDate.getFullYear() - birthDate.getFullYear();

                    var totalMonths = (yearDifferential * 12) + (currDate.getMonth() - birthDate.getMonth());

                    if (value != "") {

                        if (currDate.getDate() < birthDate.getDate()) {
                            totalMonths--;
                        }

                    }
                    else {
                        window.alert("Please enter your date of birth");
                    }

                    var age = parseInt(totalMonths / 12);
                    $("#Age").val(age);

                    if (age < 18) {
                        window.alert("You must be 18 or older to use this application.  ");

                    }
                }
            });

        });

したがって、document.ready に設定したすべての jquery 関数を再起動する何らかの方法が必要であると確信しています。おそらく onclick などに変更します。考えを教えてください。

4

1 に答える 1

0

onclickイベントを追加するという答えが見つかりました。たとえば、datepicker では、すべてを var に入れてから、.click で個別に呼び出しました。日付ピッカーは次のとおりです。

   var verifiedDate = $("#PersonModel_DateofBirth").datepicker
            ({ dateFormat: 'mm/dd/yy',
                changeMonth: true,
                changeYear: true,
                yearRange: '-100y:c+nn',
                maxDate: '-1d',
                onClose: function ageVerification() {
                    var value = $('#PersonModel_DateofBirth').val();
                    var birthDate = new Date($('#PersonModel_DateofBirth').val());
                    var currDate = new Date();
                    var yearDifferential = currDate.getFullYear() - birthDate.getFullYear();

                    var totalMonths = (yearDifferential * 12) + (currDate.getMonth() - birthDate.getMonth());

                    if (value != "") {

                        if (currDate.getDate() < birthDate.getDate()) {
                            totalMonths--;
                        }

                    }
                    else {
                        window.alert("Please enter your date of birth");
                    }

                    var age = parseInt(totalMonths / 12);
                    $("#Age").val(age);

                    if (age < 18) {
                        window.alert("You must be 18 or older to use this application.  Please use " +
                         "the Student Volunteer application, found here: " +
                         "http://www.salkeiz.k12.or.us/qam/student-criminal-history-check-packet-english");

                    }
                }
            });

            $("#PersonModel_DateofBirth").click(function () {
                verifiedDate.datepicker("show");
        });
于 2013-01-29T17:12:57.073 に答える