用JQuery Validate框架,在IE8下验证报错问题解决

网站后台用了JQuery Validate框架,版本是jQuery Validation Plugin 1.8.1

因为用的时间比较久了,一直没有更新新版本。

最近公司信息录入员有调整,没有IE11浏览器,使用IE8报错,报错位置如下:

第688行报错:name为null。

找了好多资料,最终找到合适的解决方案如下,在jquery.validate.js文件中找到elements方法,原来注释掉了这段代码:

1 if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
2                     return false;

现在将其取消注释,这段代码上面描述的意思是:只选择符合每个名字的第一个元素,并且仅选择指定了rules的元素。

如果没有这段代码,所有没指定rules的元素都会被验证,但大部分都是没有name的,这样就会导致上述的问题。js报错导致无法保存。

elements: function() {
            var validator = this,
                rulesCache = {};

            // select all valid inputs inside the form (no submit or reset buttons)
            return $(this.currentForm)
            .find("input, select, textarea")
            .not(":submit, :reset, :image, [disabled]")
            .not( this.settings.ignore )
            .filter(function() {
                var elementIdentification = this.id || this.name; 

                !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);

                // select only the first element for each name, and only those with rules specified
                if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
                    return false;

                //rulesCache[this.name] = true;

                rulesCache[elementIdentification] = true;
                return true;
            });
        },

参考文章:

http://www.docin.com/p-908202951.html

时间: 2024-10-28 15:48:56

用JQuery Validate框架,在IE8下验证报错问题解决的相关文章

javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决

找了半天问题啊!!! 我使用了mobiscroll.js这个插件 ,但是ios手机一直报错! 在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间,而在iOS上缺不能正常显示,显示的时间为:NaN-NaN1-NaN  Invalid Date new Date('2016-07-18 14:58:32').getTime();      //在ios上死活拿不到时间戳显示NaN 接着我查了很多国外的技术blog,终于找到了解决方案,原来想要IOS5中的S

Jquery Easyui框架中常用的验证

对于validatebox空间,验证其输入字符长度的最大值是否超出数据库中设置的字段长度.方法如下: 1 /** 2 * 验证输入字符长度 3 */ 4 $.extend($.fn.validatebox.defaults.rules, { 5 maxLength: { 6 validator: function(value, param){ 7 if(value.length >= param[0]) { 8 // showMsg("输入信息长度不能超过"+ param[0]

.map文件的作用以及在chorme下会报错找不到jquery-1.10.2.min.map文件,404 的原因

source map文件是js文件压缩后,文件的变量名替换对应.变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下. 比如压缩后原变量是map,压缩后通过变量替换规则可能会被替换成a,这时source map文件会记录下这个mapping的信息,这样的好处就是说,在调试的时候,如果有一些JS报错,那么浏览器会通过解析这个map文件来重新merge压缩后的js,使开发者可以用未压缩前的代码来调试,这样会给我们带来很大的方便! 而这种还原性调试功能,目前只有chorme才

VS2013编写的C#程序,在xp下会报错说“不是合法的win32程序”。

VS2013编写的程序,在xp下会报错说“不是合法的win32程序”. 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以.方法见: http://blog.csdn.net/civilman/article/details/40109685 但是,用C#编写的程序,项目属性里是没有“平台工具集”的选项的,运行时会报错说不是正常的win32程序. DotNet版本为2.0,在xp下已经安装dotnet20. 请问,有谁知道如何让VS2013编写的C#程序在XP下运

IE下js报错 SCRIPT1028: 缺少标识符、字符串或数字

今天一个jqueryUI的插件代码在IE下不能正常运行,调试了下,不是插件的问题. 这个错误原因一般都是多了个逗号括号什么的,IE检车的比较严格. 解决办法就是小心不要写多余的逗号括号什么的,或者不用IE(...) 报错代码如下: $("#postForm").validate({ rules : { title : "required", content : { required : true<span style="color:#ff0000;&

Archlinux下virtualbox报错&#39;/sbin/rcvboxdrv setup&#39;

因为刚刚换成archlinux系统,安装virtualbox的时候报错了.如下图: 可是怎么解决呢?我看了很多资料大多数是ubuntu的,没有archlinux的. 但是原理都差不多我借着也就研究出来了,第一步: 我查看了我当前系统安装与vbox相关的(服务)命令 大致我也看不出来什么,看到virtualbox的报错.我查了下资料,第二步: 所以这命令是存在的用不了,报错是说内核之类的.第三步: 看了ubuntu的用户写的文章,大致就是说要更新系统的heard文件,这样virtualbox才可以

一看便知linux下mysql报错ERROR 1044: Access denied for user: &#39;@localhost&#39; to database &#39;mysql&#39;

错误信息:ERROR 1044: Access denied for user: '@localhost' to database 'mysql' linux下解决方案: mysql> use mysql ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql' mysql> exit Bye [[email protected] ~]# service mysqld stop如果该命令不

Tomcat启动报错java.net.AbstractPlainSocketImpl(java/net/AbstractPlainSocketImpl.java:178:-1)Struts在网络复杂情况下启动报错解决办法

SSH项目 在网络复杂的情况(具体规律未知)下,Tomcat启动时,报如下错误: [ERROR] 2014-08-12 14:52:58,484 [org.apache.struts2.dispatcher.Dispatcher :27] - Dispatcher initialization failedUnable to load configuration. - Class: java.net.AbstractPlainSocketImplFile: AbstractPlainSocket

shell脚本在cygwin下运行报错: $&#39;\r&#39;: command not found

在cygwin 下运行shell脚本,出现"$'\r': command not found",这是win dos与Unix文本编辑方式不同造成的.可以使用cygwin工具dos2unix将script改为unix格式. $ dos2unix test.sh dos2unix: converting file test.sh to UNIX format ... $ sh test.sh 如此便可解决. 参见:http://lxs647.iteye.com/blog/2084375 s