为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动态追加页面数据以及事件委托详解
May 06 jQuery
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
jQuery Datatables表头不对齐的解决办法
Nov 27 jQuery
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
jquery实现动态改变css样式的方法分析
May 27 jQuery
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
Aug 08 jQuery
jQuery编写QQ简易聊天框
Aug 27 jQuery
jQuery实现图片切换效果
Oct 19 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
javascript 写类方式之六
2009/07/05 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
Python random模块常用方法
2014/11/03 Python
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
python网络应用开发知识点浅析
2019/05/28 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
垃圾回收的优点和原理
2014/05/16 面试题
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
北体毕业生求职信
2014/02/28 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
做一个有道德的人演讲稿
2014/05/14 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
Python如何用re模块实现简易tokenizer
2022/05/02 Python