在创建表单后添加jquery验证

时间:2010-03-20 12:57:01

标签: jquery jquery-plugins jquery-validate

我正在使用jquery validation plugin

首先,我将验证添加到表单中:

$('#EmployeeForm').validate({
        rules: {
            "Employee.FirstName": "required",
            "Employee.PatronymicName": "required",
            "Employee.LastName": "required",
            "Employee.BirthDay": { required: true, date: true }
        },

        messages: {
            "Employee.FirstName": { required: "*" },
            "Employee.PatronymicName": { required: "*" },
            "Employee.LastName": { required: "*" },
            "Employee.BirthDay": { required: "*", date: "00.00.00 format" }
        }
    });

直到这里才能正常工作。然后我需要将验证规则添加到其他表单元素:

$('#Address_A.Phone1, #Address_A.Phone2, #Address_B.Phone1, #Address_B.Phone2')
            .rules("add", {
                digits: true
            });

我收到错误:'form'为null或不是对象

我检查,表单及其中的所有元素都是在我向其添加验证之前创建的 我无法弄清楚出了什么问题。

3 个答案:

答案 0 :(得分:1)

我没有使用过这个插件,但是从我在documentation中看到的你应该使用普通的jQuery选择器而不是#Address_A.Phone1, #Address_A.Phone2, #Address_B.Phone1, #Address_B.Phone2(那些也是正常的选择器,但它们在正常使用中没有意义)。

因此,请尝试使用以下内容:#EmployeeForm #first-name, #EmployeeForm #last-name

答案 1 :(得分:1)

后者是否可能添加了AJAX返回的结果 - 这个结果可能已经替换了页面上的表单?或者可能是在应用验证插件之前可能正在运行的单独的“on load”部分?我建议使用未经验证的验证脚本并逐步调试(Firefox / Firebug将是我的首选)。在验证设置和规则的添加中放置断点,以查看哪个是首先被击中。如果通过AJAX替换表单,则在添加规则之前必须重新应用验证插件,因为旧表单不再可用。

答案 2 :(得分:1)

只是猜测Address_A.Phone1元素的ID是什么?

如果是,我猜您的问题来自于您在元素ID中使用.这一事实。但jQuery不会理解,例如#Address_A.Phone1为我提供了标识为Address_A.Phone1的元素,但相反会将此选择符解释为:为我提供标识为Address_A的{​​{1}}元素。

但实际上这并没有解释错误。你可以追加这个错误发生在哪一行。它是在你的代码中还是在插件代码中?如果在插件内的哪一行