为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 01 jQuery
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
原生js jquery ajax请求以及jsonp的调用方法
Aug 04 jQuery
jQuery实现html双向绑定功能示例
Oct 09 jQuery
jQuery中过滤器的基本用法示例
Oct 11 jQuery
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
jQuery中内容过滤器简单用法示例
Mar 31 jQuery
jquery实现搜索框功能实例详解
Jul 23 jQuery
jQuery实现轮播图及其原理详解
Apr 12 jQuery
jQuery滑动效果实现方法分析
Sep 05 jQuery
jquery实现下载图片功能
Jul 18 jQuery
jquery实现广告上下滚动效果
Mar 04 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
如何去掉文章里的 html 语法
2006/10/09 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
关于js datetime的那点事
2011/11/15 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python传递参数方式小结
2015/04/17 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
python非递归全排列实现方法
2017/04/10 Python
关于python写入文件自动换行的问题
2018/06/23 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
业务员的岗位职责
2014/03/15 职场文书
实习评语大全
2014/04/26 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL