当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 相关文章推荐
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
js 无提示关闭浏览器页面的代码
Mar 09 Javascript
javascript学习笔记(十八) 获得页面中的元素代码
Jun 20 Javascript
javascript实现playfair和hill密码算法
Dec 07 Javascript
7个让JavaScript变得更好的注意事项
Jan 28 Javascript
JavaScript获取IP获取的是IPV6 如何校验
Jun 12 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
详解Vue方法与事件
Mar 09 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
JS高级技巧(简洁版)
Jul 29 Javascript
AutoJs实现刷宝短视频的思路详解
May 22 Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 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
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP设计模式之工厂模式定义与用法详解
2018/04/03 PHP
ECMAScript 基础知识
2007/06/29 Javascript
javascript String 对象
2008/04/25 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
JS hashMap实例详解
2016/05/26 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
Django 拆分model和view的实现方法
2019/08/16 Python
python 6行代码制作月历生成器
2020/09/18 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
抽奖活动主持词
2014/03/31 职场文书
师德师风演讲稿
2014/05/05 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
刑事代理授权委托书
2014/09/17 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
JS class语法糖的深入剖析
2022/07/07 Javascript