jQuery验证插件v1.10验证(要求)IE8中的所有输入

Ken*_*ill 15 jquery jquery-validate

我正在使用当前版本的jQuery(1.8.3)和最新版本的jQuery validate(1.10.0),似乎在Internet Explorer 8中,jquery validate验证正在验证的表单上的所有输入,而不是只是那些有规定的规则.它在其他浏览器(IE9 +,FF,Chrome)中运行得很好,如果我使用jQuery validate 1.9.0它可以正常工作.

这是一个演示此问题的示例:

<!DOCTYPE html>

<html>
<head>
    <title>IE8 + jQuery Validate 1.10 Test</title>
    <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>
    <script type='text/javascript' src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js'></script>
</head>
<body>
    <div>
        <form id="my-form">
            <label for="my-required-field">required:</label>
            <input id="my-required-field" type="text" name="reqField" />
            <label for="my-optional-field">optional:</label>
            <input id="my-optional-field" type="text" name="optField" />
            <input id="wh-submit-button" type="submit" value="submit" />
        </form>
    </div>
    <script type="text/javascript">
        $(document).ready(function () {

            var form = $("#my-form");
            var validator = form.validate({
                rules: {
                    "reqField": { required: true }
                },
                messages: {
                    "reqField": { required: "this field is <i>actually</i> required" }
                }
            });

            $("#wh-submit-button").click(function () {
                if (validator.form()) {
                    alert('passed validation');
                }
            });
        });
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在IE8中,"通过验证"警报不会触发,可选字段将被标记为必需.

如果我明确地将可选字段标记为不需要,则它可以正常工作:

rules: {
    "reqField": { required: true },
    "optField": { required: false }
}
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,必须将显式不需要的每个输入元素标记为可选,这一点当然不是最理想的,而且从来就不是以前的要求.

我知道早期版本的jquery和jquery validate存在问题,但它们表面上是用jQuery validate 1.8.1解决的 - 我提出这个问题,因为它似乎是最新版本的jquery和validate插件.

更新:

因此,在使用Internet Explorer F12开发人员工具模拟IE8行为时,问题只会出现.根据评论提示我在IE8中提供的示例没有实际问题,我构建了一个完整的Windows VM,其中安装了真正的Internet Explorer 8,事实上,没有任何问题.虽然模拟器和真实模型之间存在明显的差异,但我之前从未见过JavaScript模拟这样的问题,并且由于jQuery Validation 1.10突然发生这一事实而引发了这种问题.

因为它只是模拟的问题,而不是真实的问题,所以这里没有什么可以解决的; 我应该首先透露它是通过模拟器...但也许其他人会陷入同一个陷阱,这将是一个有用的参考.

Spa*_*rky 0

试试这个吧...

\n\n

使用内置 jQuery 1.8.2 的 jsFiddle DEMO

\n\n

使用 jQuery 1.8.3 的 jsFiddle 演示

\n\n
$(document).ready(function() {\n\n    var form = $("#my-form");\n    var validator = form.validate({\n        rules: {\n            "reqField": {\n                required: true\n            }\n        },\n        messages: {\n            "reqField": {\n                required: "this field is <i>actually</i> required"\n            }\n        },\n        submitHandler: function(form) {\n            alert(\'passed validation\');\n            // form.submit();\n        }\n    });\n\n});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n