验证失败后如何重新激活jquery函数

时间:2013-01-29 16:15:01

标签: jquery asp.net-mvc-3 jquery-validate unobtrusive-validation

我正在使用asp MVC3和MVC Unobtrusive验证构建表单。我注意到在验证失败后,我的一些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或者其他东西。请让我知道你的想法。

1 个答案:

答案 0 :(得分:0)

我找到了答案,即添加onclick事件。例如,使用datepicker,我将整个事物放在var中,然后在.click中单独调用它。这是datepicker:

   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");
        });