为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 相关文章推荐
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
jQuery实现可拖动进度条实例代码
Jun 21 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 jQuery
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 jQuery
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
原生jQuery实现只显示年份下拉框
Dec 24 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
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
Javascript模块模式分析
2008/05/16 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
Django之PopUp的具体实现方法
2019/08/31 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
浅析Python中字符串的intern机制
2020/10/03 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
企划主管岗位职责
2013/12/12 职场文书
大学生自我鉴定
2013/12/16 职场文书
大学生赌博检讨书
2014/09/22 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
Django显示可视化图表的实践
2021/05/10 Python
Python实现仓库管理系统
2022/05/30 Python