为JQuery EasyUI 表单组件增加焦点切换功能的方法


Posted in jQuery onApril 13, 2017

1、背景说明

    在使用 JQuery  EasyUI 各表单组件时,实际客户端页面元素是由 JQuery EasyUI 生成的,元素的焦点切换,虽然 Tab 键可以正常用,但顺序控制属性 tabindex 不起作用,因为页面看到的元素,是生成的,没有tabindex 属性,而真实的元素被隐藏了。本文通过一个自定义函数,实现Tab回车键的焦点切换功能。

2、函数定义

 通过捕获窗口按件,对回车和Tab键进行了热点切换处理。先根据当前焦点,获取需要tabindex 属性,加1后为下一焦点无素的属性值,根据这一属性找到下一焦点元素,并设置成焦点。

//增加改变焦点操作
function addChangeFocusOpe()
{
 $(window).keydown(function(event){//按键事件
  if(event.keyCode==13 || event.keyCode==9) //回车 或 tab键
  {
   var tabindex = $($(':focus').parent()[0]).prev().attr("tabindex"); //取(当前焦点--父元素--前一元素)的 tabindex 属性。该结构根据jQuery EasyUI生成的页面结构而定。
   if(tabindex != undefined)
   {
    var nextIndex = parseInt(tabindex) + 1; //下一焦点元素tabindex编号
    var nextInput = $("input[tabindex='"+nextIndex+"']"); //查找下一焦点元素
    if(nextInput.length > 0);
    {
     var nextObj = $(nextInput[0]);
     var options = nextObj.attr("data-options"); //设置的属性值,用于判断是否是“文本区域”
     var focusObj = $(nextInput[0]).next('span').find('input'); //元素--下一span元素 --内部input。该结构根据jQuery EasyUI生成的页面结构而定
     if(options.indexOf("multiline:true") != -1)
     {//要设置焦点的元素是“文本区域”
      focusObj = nextObj.next('span').find('textarea');
     }
     focusObj.focus(); //设置焦点
    }
   }
  }
  if(event.keyCode==9)
  {//对于tab键,则取消其本有功能,因为上面已完成焦点转换
    return false;
  }
 });
}

3、使用方式

(1)页面调用函数

$(function(){ 
 $('#code').next('span').find('input').focus(); //第一个元素设置焦点 
 addChangeFocusOpe(); //页面增加焦点切换操作 
});

(2)表单元素设置 tabindex 属性

为JQuery EasyUI 表单组件增加焦点切换功能的方法

4、约束和限制

由于函数实现时,tabindex 采用 +1的方式,去查找下一元素,所在页面设置 tabindex 属性时,一定要连续,否则在断续的地方,将不起作用。

以上这篇为JQuery EasyUI 表单组件增加"焦点切换"功能的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
利用jquery去掉时光轴头尾部线条的方法实例
Jun 16 jQuery
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
jQuery实现的上传图片本地预览效果简单示例
Mar 29 jQuery
jQuery中复合选择器简单用法示例
Mar 31 jQuery
jQuery实现获取动态添加的标签对象示例
Jun 28 jQuery
jQuery的Ajax接收java返回数据方法
Aug 11 jQuery
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 jQuery
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
Jul 03 jQuery
jQuery 选择器用法基础入门示例
Jan 04 jQuery
jquery实现上传图片功能
Jun 29 jQuery
详谈jQuery.load()和Jsp的include的区别
Apr 12 #jQuery
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 #jQuery
jQuery用noConflict代替$的实现方法
Apr 12 #jQuery
jQuery判断邮箱格式对错实例代码讲解
Apr 12 #jQuery
jquery 校验中国身份证号码实例详解
Apr 11 #jQuery
基于jQuery实现瀑布流页面
Apr 11 #jQuery
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 #jQuery
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP4实际应用经验篇(6)
2006/10/09 PHP
PHP的几个常用加密函数
2016/02/03 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
判断javascript的数据类型(示例代码)
2013/12/11 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
react路由配置方式详解
2017/08/07 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
[02:09]2018DOTA2亚洲邀请赛TNC赛前采访
2018/04/04 DOTA
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
Python 实现一个简单的web服务器
2021/01/03 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
《美丽的公鸡》教学反思
2014/02/25 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
大学同学聚会感言
2015/07/30 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python