当jQuery1.7遇上focus方法的问题


Posted in Javascript onJanuary 26, 2014

jQuery中有一个focus()方法能设置对象的焦点,在1.7以下的版本中,不管对象是不是disabed状态,这个方法都不会报错(只是当disabled时,设置焦点的代码无效),但在1.7版本中,如果对象是disabled状态,这时调用focus()方法时,会直接报异常:

Error: Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept the focus.

意思是:不可见或不可用的元素无法获取焦点。(特别提一下:IE9很NB,能自动识别这种情况,在IE9下不会报错,但是IE9以下的版本全挂。)

<!doctype html>
<html>
 <head>
 <title>测试</title>
 <script src="jquery-1.7.min.js" type="text/javascript"></script>
 <!--<script src="jquery-1.4.4.min.js" type="text/javascript"></script>-->
 <script type="text/javascript">
  function fnTest(){
   //try{
    $("#txt").focus();
   //}catch(e){}
  }  
 </script>
 </head>
 <body>
  <div>
   <input type="text" disabled="disabled" id="txt"/>
   <input type="text" id="txt2"/>
   <input type="button" value="Test" onclick="fnTest()"/>
  </div>
 </body>
</html>

虽然只是一个小变化,但是却很容易造成大杯具,特别是你的js代码,在focus()之后,还有其它很多事情要做时:)

建议:
如果一定要用最高版本的jQuery,最省事的办法莫过于在写xxx.focus()时,加一个try/catch,变成try{xxx.focus();}catch(e){}

Javascript 相关文章推荐
基于JQuery实现相同内容合并单元格的代码
Jan 12 Javascript
JS 精确统计网站访问量的实例代码
Jul 05 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
JavaScript设计模式之单例模式实例
Sep 24 Javascript
JS简单循环遍历json数组的方法
Apr 22 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
Js实现中国公民身份证号码有效性验证实例代码
May 03 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
深入理解JS的事件绑定、事件流模型
May 13 Javascript
node基于async/await对mysql进行封装
Jun 20 Javascript
uni-app从安装到卸载的入门教程
May 15 Javascript
JavaScript实现九宫格拖拽效果
Jun 28 Javascript
jQuery中delegate和on的用法与区别详细解析
Jan 26 #Javascript
使用javascript为网页增加夜间模式
Jan 26 #Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 #Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
Jan 26 #Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
Jan 26 #Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
Jan 25 #Javascript
手机平板等移动端适配跳转URL的js代码
Jan 25 #Javascript
You might like
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
javascript 写类方式之一
2009/07/05 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
2016/09/21 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
Python入门篇之对象类型
2014/10/17 Python
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
python负载均衡的简单实现方法
2018/02/04 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
python截取两个单词之间的内容方法
2018/12/25 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
python中线程和进程有何区别
2020/06/17 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
应聘自荐信
2013/12/14 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
小程序实现筛子抽奖
2021/05/26 Javascript
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android
Python  lambda匿名函数和三元运算符
2022/04/19 Python
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS