IE 8中的Jquery验证 - 对象不支持此属性或方法用于下拉框

时间:2013-11-15 16:05:02

标签: validationrules

我正在使用jquery验证来验证我的表单。它在文本框上运行良好,但是当我尝试验证下拉列表时,它仅在 IE 8 中抛出“对象不支持此属性或方法”错误。它在FF或Chrome中运行良好。不确定我是否做错了什么。我甚至尝试不使用自定义的“notEqual”函数来测试它,并将其替换为“required”方法中的构建。再一次,它给了我同样的东西。

请帮忙!非常感谢!

这是我的代码:

$(document).ready(function () {  
    jQuery.validator.addMethod("notEqual", function(value, element, param) {
      return this.optional(element) || value != param;
    }, "Please specify a different (non-default) value");

    $("#form1").validate({
        focusInvalid: false,
        focusCleanup: true,
        debug: false,
        onkeyup: false,
        onclick: true,
        onsubmit: true,
        onkeyup: false,
        rules: {
            <%=titleText.UniqueID %>: {
                required: true
             },

            <%=startDateText.UniqueID %>: {
                required: true ,
                date: true
             },

             <%=endHourText.UniqueID %>: { 
                notEqual: "00"
             },

            submitHandler: function(form) {
                form.submit();
            }

        },
        messages: {
            <%=titleText.UniqueID %>: {
                required: "Please provide a name for the event."
           },

            <%=startDateText.UniqueID %>: {
                required: "Please enter a date for the event.",
                date: "Please enter a valid date."
           },

            <%=endHourText.UniqueID %>: {
                notEqual: "Please enter a valid end time."
           }

        }
    });
});

提前致谢!!

1 个答案:

答案 0 :(得分:0)

啊,啊哈,我前几天才发现这一点。 JQuery Validator尝试访问select元素的'form'属性,如果这是null,则JQuery Validator会因你描述的错误而崩溃。

我不完全确定为什么element.form对你来说是空的。我从来都不清楚为什么它对我来说也是空的,除非它与验证即使从包含这个特定的select元素的HTML被从DOM中删除的事实有关。

我通过在验证代码中添加一个检查来解决这个问题,这样我只验证了element.form!= null的select元素。您可能还需要检查element.form是否存在,因为在Firefox中没有这样的属性:

if (element.form && element.form != null) { ... }