为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插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
jquery append与appendTo方法比较
May 24 jQuery
jquery图片放大镜效果
Jun 23 jQuery
jQuery validata插件实现方法
Jun 25 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
jQuery UI Draggable + Sortable 结合使用(实例讲解)
Sep 07 jQuery
jQuery实现table中两列CheckBox只能选中一个的示例
Sep 22 jQuery
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
jQuery实现轮播图效果demo
Jan 11 jQuery
jQuery操作选中select下拉框的值代码实例
Feb 07 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP多文件上传实例
2015/07/09 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
python中的print()输出
2019/04/12 Python
Python-接口开发入门解析
2019/08/01 Python
django框架ModelForm组件用法详解
2019/12/11 Python
python如何提升爬虫效率
2020/09/27 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
财务管理专业求职信
2014/06/11 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
2016入党心得体会范文
2016/01/06 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书