Как да задействам отново jquery функции след неуспешно валидиране

Създавам формуляр, използвайки 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.  ");

                    }
                }
            });

        });

Така че съм почти сигурен, че имам нужда от някакъв начин за повторно задействане на всички функции на jquery, които съм задал на document.ready, може би промяна на onclick или нещо подобно. Моля, кажете ми вашите мисли.


person BattlFrog    schedule 29.01.2013    source източник


Отговори (1)


Намерих отговорите, които бяха да добавям събития onclick. Например с инструмента за избор на дата, сложих всичко в 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");
        });
person BattlFrog    schedule 29.01.2013