记录Js 文本框验证 与 IE兼容性

         最近的日常就是讲测试小姐姐的提交的bug进行修改,想来这种事情还是比较好开展的,毕竟此项目已经上线一年多,现在只是一些前端的问题需要改正。仅此记录下常用的场景

① 文本框验证:

   db中规定某字段长度为50,界面对应的文本框需要下验证,直接设置maxlength='50' 是不合理的,比如输入50个文字,其文本框的length 是50,但是保存到数据库表时,就是50*2,毕竟一个文字占用两个长度

这样的话,写一个函数,用正则识别汉字个数,然后  (val总长度-汉字的个数)+汉字个数*2 = 实际长度

        var testLenth = function ($txt) {

            var intb = $txt.val();

            re = /[\u4E00-\u9FA5]/g;
            var zwlenth = 0;
            if (re.test(intb)) {
                zwlenth = intb.match(re).length * 2 + intb.length - intb.match(re).length;
                return zwlenth;
            }
            else {
                return intb.length;
            }


        }

     由于项目中某视频流只支持32位的 IE8,所以好多和IE不兼容的CSS5、JS函数 ,都需要重新去写,如此一来,修改的东西就不少了,很多之前可以显示的效果就不行了,需要重新找解决方案,大多数网上都是有记录的,这里记录一二

① 操作父节点

   当父节点下的子节点中存在文字、图片时,直接设置父节点长度为0 对IE是无效果的,IE中默认文字大小是30px,所以解决方案有二:

其一 先获取子节点对象,然后将其文字大小设置为 0,然后再设置父节点高度为 0

其二 先隐藏子节点对象,然后再设置父节点高度 (PS:这里要使用动画效果,所以需要设置下高度)

② 绑定事件

   绑定事件时,如果情景合理,尽量使用bind去取代on,bind对 jq 的版本兼容性强于 on

1.bind()函数只能针对已经存在的元素进行事件的设置;但是live(),on(),delegate()均支持未来新添加元素的事件设置; 2.bind()函数在jquery1.7版本以前比较受推崇,1.7版本出来之后,官方已经不推荐用bind(),替代函数为on(),这也是1.7版本新添加的函数,同样,可以  用来代替live()函数,live()函数在1.9版本已经删除; 3.live()函数和delegate()函数两者类似,但是live()函数在执行速度,灵活性和CSS选择器支持方面较delegate()差些,想了解具体情况,请戳这:  http://kb.cnblogs.com/page/94469/ 4.bind()支持Jquery所有版本;live()支持jquery1.8-;delegate()支持jquery1.4.2+;on()支持jquery1.7+; 

 ③ webuploader.js 插件的引用

     点击上传按钮,界面无响应,按照网上各种说法,增加 <mate>标签;确定swf 路径之类的,后来发现对于IE8来说,本地的 flash 版本一定要升级到位

猜你喜欢

转载自www.cnblogs.com/Sientuo/p/9208313.html