1

我正在使用 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 或其他东西。请让我知道你的想法。

4

1 回答 1

0

我找到了答案,那就是添加 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");
        });
于 2013-01-29T17:12:57.073 回答