jQuery验证在IE7 + IE8中无法工作

37

我正在尝试在我的网站上的一个表单中使用jQuery验证插件。该表单在 Firefox、Chrome、Opera 和 Safari 中工作正常,但在 IE7 或 IE8 中却无法正常工作。

以下是我的代码的简化版本,它似乎在除 IE 外的所有浏览器中都可以运行。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">

<title>Form</title>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8/jquery.validate.js"></script>

<script type="text/javascript">
    $(document).ready(function(){
       var validator = $("form").validate ({
       rules: {
                first_name: "required"
              },
       messages: {
                first_name: "Enter your firstname"
                 }
       });
    });
</script>

</head>

<body>

<form method="post">
    <label for="first_name" class="hide">First Name</label> 
    <input type="text" name="first_name" value="" id="first_name" class="required" />
    <button type="submit" id="submit" name="submit">Submit</button>
</form>

</body>

</html>

编辑: 我们现在知道使用最新版本的jQuery,而我之前使用的是jQuery v1.6,这就是问题所在。我切换回了v1.5.2并做出了更改。

var validator = $("form").validate ({

发送至:

$("form").validate ({

现在在IE中一切都正常了,谢谢。


下降到1.5.2并删除“var validator =”,以便我的第一行以$(“form”).validate开头。感谢@redsquare - magzalez
可能是重复的问题:JQuery验证在IE8中无法工作 - ripper234
6个回答

43

有没有不使用NuGet下载这个的方法? - Kieran Andrews
升级到1.9.0版本后,现在可以在IE8中正常运行。在此之前,它会显示错误消息但仍能提交表单。 - Maksym Kozlenko
我有以下内容。但仍然无法工作: jQuery - 2.0.3, jQuery.Validation - 1.11.1, Microsoft.jQuery.Unobtrusive.Validation - 3.0.0 - shashwat

16

在Visual Studio中创建新的ASP.NET MVC 3项目时,默认情况下,脚本文件夹会包含以下内容:

jquery-1.5.1.min.js 
jquery.validate.min.js (which is version 1.8.0)

你可能想要做的第一件事就是将 jQuery 版本更新到最新版本,当今的最新版本是 1.7.1 版本。

但是,请注意:在此之后,如果使用 Internet Explorer 7 或 Internet Explorer 8 浏览器,则客户端验证将停止工作

这是因为 jquery.validate 版本不兼容jquery版本> 1.6。 解决方法很简单,您需要同时更新 jquery.validate 版本。

您可以从 Microsoft 的 CDN 中找到当前版本 1.9,或在 GitHub 上找到最新版本:

Microsoft Ajax CDN: http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js

GitHub Jquery Validation: https://github.com/jzaefferer/jquery-validation/downloads

记住,您始终可以在 Microsoft 的 CDN 中查找最新的 JavaScript 库,在此处查看所有可用库的完整列表:http://www.asp.net/ajaxlibrary/cdn.ashx

此信息摘自我关于此问题的博客文章


1
谢谢您的回复,这对我有用。我的配置是jQuery 1.9.1,我必须将jQuery Validate从1.15降级到1.9。 - RokumDev

5

值得一提的是,我不得不升级到最新版本的JQuery(目前为1.8.2)和Validate(1.10),以解决这个问题。


4

我在IE7/IE8中遇到了jquery.validate.js的问题。调试后,我发现以下代码(版本1.7中的第436行)导致了问题:

return $([]).add(this.currentForm.elements)
            .filter(":input")

用类似下面的内容替换这两行:

return $(':input', this.currentForm)

那对我来说很有用。

1

我刚遇到了这个问题,但问题不是我需要最新版本的jQuery,而是最新版本的jQuery导致了问题。目前,jQuery 2.x不支持IE,因此请确保您使用的是1.8+但小于2.0的版本。


jQuery 2.0支持IE,但他们已经删除了所有仅被过时(损坏)版本使用的额外代码,以使jQuery在其余部分运行更快。引用http://jquery.com/download的话:“jQuery 2.x具有与jQuery 1.x相同的API,但不支持Internet Explorer 6、7或8。” - EpicVoyage

1
我在使用jqueryui的自动完成功能时,在Sage CRM上遇到了同样的问题,IE(版本10)中出现错误“script3:member not found。jquery-1.8.2.min.js,line 2 character 32075”。这个错误与页面模式有关:IE将站点强制转换为IE 7标准模式。

这是一种不好的方法,但它可以很好地解决问题。将此代码放在页面开头。今晚我花了一个小时来解决这个问题,希望这能帮助其他人。

<!DOCTYPE HTML>
<meta http-equiv="x-ua-compatible" content="IE=Edge">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接