当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下为Event handler传递动态参数的代码
Jan 06 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
Seajs的学习笔记
Mar 04 Javascript
js实例属性和原型属性示例详解
Nov 23 Javascript
招聘网站基于jQuery实现自动刷新简历
May 10 Javascript
JavaScript中的toUTCString()方法使用详解
Jun 12 Javascript
高性能JavaScript DOM编程(1)
Aug 11 Javascript
动态加载js文件简单示例
Apr 21 Javascript
Easyui Treegrid改变默认图标的方法
Apr 29 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
Dec 13 Javascript
javascript实现扫雷简易版
Aug 18 Javascript
ES6的循环与可迭代对象示例详解
Jan 31 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 字符串处理函数大全
2010/03/23 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
Jquery操作radio的简单实例
2014/01/06 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
vue实现购物车小案例
2019/09/27 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
python安装cx_Oracle模块常见问题与解决方法
2017/02/21 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
Python中的集合介绍
2019/01/28 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
你常见到的runtime exception
2016/09/05 面试题
出纳员的岗位职责
2014/02/22 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
学校督导评估方案
2014/06/10 职场文书
大学军训心得体会800字
2016/01/11 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python