更新:我已经用Razor HTML5创建了一个新的MVC3项目,然后我在JQuery 1.6中用NuGet更新了这个项目,验证插件不再工作了,它每次都会回发一次,并从服务器返回错误消息。我认为验证插件在JQuery 1.6中失效了
我有一个MVC3应用程序,它使用Jquery UI对话框(从包含表单的局部视图加载),以便通过ajax向服务器提交信息。在执行ajax post之前,我想在客户端触发表单的验证。在火狐和IE9上运行良好,在IE7 & IE8中,form.validate()总是返回true。
下面是附加到我的提交按钮上的js代码:
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);
我使用的内容包括:
<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脚手架模板不兼容??
发布于 2011-05-11 07:49:05
Jquery Validate目前不支持IE6、IE7和IE8中的jQuery 1.6。
发布于 2012-01-21 09:06:12
我在IE7/IE8中使用jquery.validate.js时遇到了问题。在调试之后,我注意到下面这行代码导致了这个问题(版本1.7中的ln 436 ):
return $([]).add(this.currentForm.elements)
.filter(":input")
将这两行替换为以下内容:
return $(':input', this.currentForm)
这对我来说很有效。
发布于 2011-05-26 03:17:21
尝试切换到非最小化版本:
缩小版的jQuery 1.6似乎无法在IE7、IE8兼容模式和IE9兼容模式下正常工作。切换到非miinified对我很有效。
http://bugs.jquery.com/ticket/9365
祝好运!
https://stackoverflow.com/questions/5909260
复制相似问题