使用jQuery验证的表单:IE8上的this.appendChild(a)错误

时间:2012-09-05 20:58:48

标签: jquery internet-explorer-8 validation

好的,关于这个表格的最后一个问题我希望。它功能齐全,除了IE8上的一个错误,似乎没有在任何地方记录(在这种情况下,我可以找到......)。

如果我在IE9的IE8模式下运行此表单,我会在开发工具中看到以下内容

SCRIPT65535: Unexpected call to method or property access. jquery.min.js, line 2 character 65772

,对应于jquery.min.js中的this.appendChild(a)

如果我忽略了错误,验证仍然适用于IE8。在IE9,Chrome,Firefox中没有任何问题。

我的验证码的功能摘要......

<head>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script>


<style>

.incomplete {
    border: 1px solid red;
    }

</style>

<script type="text/javascript">
    //form validation start
   $(document).ready(function() {

   $("#form").validate({
        errorLabelContainer: "input",
        wrapper: ".form",
        keyup: false,
        onfocusout: false,
        onclick: false,
        onchange: false,
        errorElement: "input",
        errorClass: "incomplete",
        rules: {
            organization: {
                defaultInvalid: true,
                required: true,
                minlength: 2
                },
            firstname: {
                defaultInvalid: true,
                required: true,
                minlength: 2
                },
            lastname: {
                defaultInvalid: true,
                required: true,
                minlength: 2
                },
            email: {
                defaultInvalid: true,
                required: true,
                email: true
                },
            phone: {
                defaultInvalid: true,
                required: true,
                minlength: 10
                },
        }
    });
   }); 
</script>

</head>
<body>

<div id="border">
    <div id="form_title">REQUEST INFO</div>
    <form id="form" name="form_container" action="#">
        <!-- fields -->
        <input id="organization" type="text" name="organization" />
        <input id="firstname" type="text" name="firstname" />
        <input id="lastname" type="text"  name="lastname" />
        <input id="email" type="text" name="email" />
        <input id="phone" type="text" name="phone" />
        <!-- submit button -->
        <input id="button" name="submit" class="button" type="submit" value="submit" /> 
    </form>
</div>

</body>
</html>

到目前为止,如果没有你们的帮助,我无法做到这一点,谢谢你。

2 个答案:

答案 0 :(得分:1)

不确定这是否有帮助,但您的语法错误很少:

phone: {
            defaultInvalid: true,
            required: true,
            minlength: 10
            },

请注意额外的逗号。它是列表中的最后一个,不需要它。在此逗号后appendChild可能正在使用空白规则,这是错误吗?

答案 1 :(得分:0)

好吧,我从来没有真正深入到底,但我发现IE8中没有错误的东西。

主要区别在于errorLabelContainer已更改为表单的类而不是单个输入,并且errorElement已被删除(我已经不再需要了)。

wrapper: ".formwrapper",
keyup: false,
onfocusout: false,
onclick: false,
onchange: false,
errorLabelContainer: ".form",
errorClass: "incomplete",