首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JQuery 1.6 $('form').validate()在IE7和IE8中不起作用

JQuery 1.6 $('form').validate()在IE7和IE8中不起作用
EN

Stack Overflow用户
提问于 2011-05-06 17:15:30
回答 11查看 15.9K关注 0票数 18

更新:我已经用Razor HTML5创建了一个新的MVC3项目,然后我在JQuery 1.6中用NuGet更新了这个项目,验证插件不再工作了,它每次都会回发一次,并从服务器返回错误消息。我认为验证插件在JQuery 1.6中失效了

我有一个MVC3应用程序,它使用Jquery UI对话框(从包含表单的局部视图加载),以便通过ajax向服务器提交信息。在执行ajax post之前,我想在客户端触发表单的验证。在火狐和IE9上运行良好,在IE7 & IE8中,form.validate()总是返回true。

下面是附加到我的提交按钮上的js代码:

代码语言:javascript
复制
    var wizard = $("#wizard"); //div that holds the modal dialog
    var myform = $("#wizard form");

    var submitFunction = function (e) {
        e.preventDefault(); //no postback
        myform.validate();
        if (myform.valid()) {
            $(this).attr("disabled", "disabled");
            submited = true;
            $.post(
                "SuperAdmin/CreateEditController",
                $(this).serialize(),
                function (data) {
                    if (data.Success) {
                        wizard.dialog('destroy');
                    }
                    else {
                        wizard.html(data.Html);
                    }
                },
                "json"
            ); //end json post
        }
    };
myform.submit(submitFunction);

我使用的内容包括:

代码语言:javascript
复制
<script src="@Url.Content("~/Scripts/jquery-1.6.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

JQuery验证插件已使用1.8.0版的NuGet和1.6版的JQuery库进行了升级。

更新:我测试了使用脚手架默认模板生成的代码,它做了同样的事情,没有客户端验证。也许Razor1.6与JQuery脚手架模板不兼容??

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-05-11 07:49:05

Jquery Validate目前不支持IE6、IE7和IE8中的jQuery 1.6。

https://github.com/jzaefferer/jquery-validation/issues/105

票数 19
EN

Stack Overflow用户

发布于 2012-01-21 09:06:12

我在IE7/IE8中使用jquery.validate.js时遇到了问题。在调试之后,我注意到下面这行代码导致了这个问题(版本1.7中的ln 436 ):

代码语言:javascript
复制
return $([]).add(this.currentForm.elements)
            .filter(":input")

将这两行替换为以下内容:

代码语言:javascript
复制
return $(':input', this.currentForm)

这对我来说很有效。

票数 5
EN

Stack Overflow用户

发布于 2011-05-26 03:17:21

尝试切换到非最小化版本:

缩小版的jQuery 1.6似乎无法在IE7、IE8兼容模式和IE9兼容模式下正常工作。切换到非miinified对我很有效。

http://bugs.jquery.com/ticket/9365

祝好运!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5909260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档