0

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

请帮忙!非常感谢!

这是我的代码:

$(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."
           }

        }
    });
});

提前致谢!!

4

1 回答 1

0

啊哈,前几天我自己发现了这一点。JQuery Validator 尝试访问 select 元素的 'form' 属性,如果这是 null,JQuery Validator 会因您描述的错误而爆炸。

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

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

if (element.form && element.form != null) { ... }
于 2014-01-12T12:03:34.507 回答