当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.extend()的实现方式详解及实例
Jun 29 Javascript
jquery.post用法关于type设置问题补充
Jan 03 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 Javascript
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 jQuery
vue使用$emit时,父组件无法监听到子组件的事件实例
Feb 26 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
Nov 05 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
Aug 12 Javascript
JavaScript圣杯布局与双飞翼布局实现案例详解
Aug 05 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
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
使用PHP开发留言板功能
2019/11/19 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
js+canvas实现验证码功能
2020/09/21 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
Python编程中flask的简介与简单使用
2018/12/28 Python
对python中list的五种查找方法说明
2020/07/13 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
幼儿园家长会邀请函
2014/01/15 职场文书
2014庆六一活动方案
2014/03/02 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
第二次离婚起诉书
2015/05/18 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL