读书人

Jquery validate为何只有在IE7中不正常

发布时间: 2013-06-26 14:29:32 作者: rapoo

Jquery validate为什么只有在IE7中不正常
代码如下:

我测试了很多浏览器,FF,Chrome, IE789,10,Safri, Opera,只有在IE7下不能work,直接就提交到后台了,其他浏览器都可以正常进行校验。不知道是什么原因,在网上搜了一下,有人说是逗号的问题,但我这里都检查过了,格式都是规范的。

所以我现在也不知道是什么问题了,请兄弟们帮忙看看啊。


<script src="/Scripts/jquery-1.7.1.js"></script>
<!--jQuery Validation Plugin 1.9.0-->
<script type="text/javascript" src="/Scripts/jquery.validate.min.js"></script>

<!--JS 代码-->
$(document).ready(function () {
$("#loginForm").validate({
rules: {
password: { required: true },
email: {
required: true,
email: true
}
},
messages: {
password: { required: "请输入密码" },
email: {
required: "请输入电子邮件地址",
email: "请输入正确的电子邮件地址"
}
},
errorPlacement: function (error, element) {
error.appendTo(element.next("span"));
}
});
});


<!--Form 代码-->
<form action="/Home/Login" id="loginForm" method="post">
<div id="divLoginForm">
<ul>


<li>
<span>电子邮件:</span>
</li>
<li>
<input type="text" name="email" id="tenantName" />
<span class="errMsg"></span>
</li>
<li style="margin-top:30px;">
<span>密码:</span>
</li>
<li style="margin-top:30px;">
<input type="password" name="password" />
<span class="errMsg"></span>
</li>
</ul>
<input id="loginSubmit" type="submit" value="登陆" />
</div>
<input type="hidden" name="returnUrl" />
</form>


[解决办法]
IE7下好像还有其它的模式可以切换的,楼主可以试试,别外,兼容什么的最讨厌了,要不你写一个手写的验证js?
[解决办法]
引用:
代码如下:

我测试了很多浏览器,FF,Chrome, IE789,10,Safri, Opera,只有在IE7下不能work,直接就提交到后台了,其他浏览器都可以正常进行校验。不知道是什么原因,在网上搜了一下,有人说是逗号的问题,但我这里都检查过了,格式都是规范的。

所以我现在也不知道是什么问题了,请兄弟们帮忙看看啊。

XML/HTML code?123……

Jquery validate有两种验证方法
一种是基于表单的验证,示例代码

<script type="text/javascript">
$(function () {


$.validateForm('loginForm', {
rules: {
'<%= this.txtName.ClientID %>': { required: true, rangelength: [1, 20], regex: "^(([A-Za-z0-9]{1,20})
[解决办法]
([A-Za-z0-9\u4e00-\u9fa5]{1,10})
[解决办法]
([\u4e00-\u9fa5]{1,10}))$" },
'<%= this.txtpassword.ClientID %>': { required: true, rangelength: [6, 16] }
},
msg: {
'<%= this.txtName.ClientID %>': { required: "用户真实姓名不能为空", rangelength: "真实姓名只能为1-20字符(只能输入10个汉字)", regex: "真实姓名只能为汉字、数字、字母(只能输入10个汉字)" },
'<%= this.txtpassword.ClientID %>': { required: "用户密码不能为空", rangelength: "6~16个字符(包括字母、数字、特殊符号,区分大小写)" }
}
})
});

</script>


一种是基于表单中按钮的点击验证触发,示例代码

$(function () {
$.clickValidate('loginSubmit', {
rules: {
'<%= this.txtRoleName.ClientID %>': { required: true, rangelength: [1, 20], regex: "^(([a-zA-Z0-9_]{1,20})
[解决办法]
([a-zA-Z0-9\u4e00-\u9fa5_]{1,10})
[解决办法]
([\u4e00-\u9fa5]{1,10}))$" },
'<%= this.txtDescription.ClientID %>': { rangelength: [0, 200] }
},
msg: {
'<%= this.txtRoleName.ClientID %>': { required: '用户组名称不能为空', rangelength: "用户组名称只能为1-20字符(不支持特殊字符)", regex: "用户组名称只能为1-20字符或者1-10个汉字(不支持特殊字符)" },
'<%= this.txtDescription.ClientID %>': { rangelength: "备注太长" }


}
})
});



[解决办法]
露珠用的是IE10向下的IE7模式吧,IE10开发的是有多偷懒,大家知道么?
在IE10向下的IE7模式下,运行

$("form").attr("novalidate","novalidate");
$("input").attr("placeholder","我是占位符");

诸如此类涉及HTML5的新属性的代码,IE10向下的IE7模式下,统统爆出找不到成员的错误,
不幸的是,最新的jquery.validate插件,一上来就会设置form的novalidate属性,于是,,,,
[解决办法]
引用:
露珠用的是IE10向下的IE7模式吧,IE10开发的是有多偷懒,大家知道么?
在IE10向下的IE7模式下,运行
JavaScript code?12$("form").attr("novalidate","novalidate");$("input").attr("placeholder","我是占位符");
诸如此类涉及HTML5的新属性的代码,IE10向下的……

IE10这么干简直龌龊,不用理会IE10的向下兼容IE7模式,但是说回来,这样对开发者用IE10调试IE低版本兼容性,简直就是毁灭性的,IE10向下兼容模式做的太糙了。
[解决办法]
引用:


this.attr('novalidate', 'novalidate');
修改为
if (typeof (Worker) !== "undefined") { this.attr('novalidate', 'novalidate'); }

即可, 楼主结贴吧

读书人网 >asp.net

热点推荐