首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2013-06-26 
Jquery validate为什么只有在IE7中不正常代码如下:我测试了很多浏览器,FF,Chrome, IE789,10,Safri, Opera,

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'); }

即可, 楼主结贴吧

热点排行