为jqueryeasyui表单组件增加“焦点切换”功能

如莲家园      2022-02-09     621

关键词:

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 属性

 

4、约束和限制

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

 

第二百零九节,jqueryeasyui,pagination(分页)组件

jQueryEasyUI,Pagination(分页)组件 学习要点:  1.加载方式  2.属性列表  3.事件列表  4.方法列表 本节课重点了解EasyUI中Pagination(分页)组件的使用方法,这个组件依赖于LinkButton(按钮)组件。 查看详情

第一百一十节,jqueryeasyui,searchbox(搜索框)组件

jQueryEasyUI,SearchBox(搜索框)组件 学习要点:  1.加载方式  2.属性列表  3.方法列表 本节课重点了解EasyUI中SearchBox(搜索框)组件的使用方法,这个组件依赖于MenuButton(按钮)组件。 一.加载方式 查看详情

雷林鹏分享:jqueryeasyui表单-创建树形下拉框

  jQueryEasyUI表单-创建树形下拉框  树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox)。它可以作为一个表单字段进行使用,可以提交给远程服务器。  在本教程中,我们将要创建一个注册表单,带有name、a... 查看详情

antdform表单中的select组件在多选的模式下增加全选

...要在已经是多选模式的select组件中加入全选选项。把Form表单中的select组件改为受控组件,单独提出来封装一下。父组件中:父组件给子组件传回调函数,接收子组件的值,然后存储到state中,Form表单提交时,从state中获取Selet组... 查看详情

第二百二十四节,jqueryeasyui,combogrid(数据表格下拉框)组件

jQueryEasyUI,ComboGrid(数据表格下拉框)组件 学习要点:  1.加载方式  2.属性列表  3.方法列表 本节课重点了解EasyUI中ComboGrid(数据表格下拉框)组件的使用方法,这个组件依赖于Combo(自定义下拉框)和DataGrid(数据表格)组... 查看详情

关于jqueryeasyui的datagrid组件,如何动态加载表头及其数据

希望写一段jquery代码,实现当后台发回不同的数据时,生成列的表头,同时加载出下面的列,后台数据请用json文件模拟//改变datagrid表头和数据 varchangeDatagrid=function(data) varfieldDataWrap=newArray(); varfieldData=newArray(); varf... 查看详情

jqueryeasyui/topjui创建日期输入框

jQueryEasyUI/TopJUI创建日期输入框日期时间输入框组件 HTMLrequired:必填字段,默认为false;prompt:显示在输入框的提示性文字;pattern:日期格式YYYY、YYYY-mm  <divclass="topjui-container"><fieldset><legend>yyyy-MM-dd格式</lege 查看详情

icon是表单组件吗

参考技术A是的。基础内容组件:基础内容包含图标icon、进度条progress、富文本rich-text和文本text等组件。小程序版本更新很快,后面可能还会有新增加的组件。 查看详情

jqueryeasyui异步combotree的赋值问题。

在修改页面的form表单中,使用form的load方法给组件赋值,但是combotree是异步加载的,只有根节点被渲染出来了,以下节点值还没有请求,所以load的时候把编码赋值到combotree中了,对应节点的中文没有翻译过来。除了使用load前全... 查看详情

将动态表单建模为 React 组件

】将动态表单建模为React组件【英文标题】:ModellingDynamicFormsasReactComponent【发布时间】:2018-11-1020:26:04【问题描述】:如何?例如,我想创建一个如下图所示的表单:如何将其建模为React组件?如何为该组件添加动态性?例如,... 查看详情

如何为extjs的form表单组件里面的每一个字段增加一个编辑按钮

...字段的单独编辑的功能,也就是说:一次只允许用户编辑表单中的一个字段.不允许同时编辑两个字段 /** *自定义一个带编辑控制按钮的控件 */ Ext.define('Ext.form.ControlEditField', extend:'Ext.form.FieldContainer', alias:'widget.cont... 查看详情

在 ReactJS 中为表单组件创建 ContextProvider

】在ReactJS中为表单组件创建ContextProvider【英文标题】:CreatingaContextProviderforaFormComponentinReactJS【发布时间】:2020-01-1414:04:16【问题描述】:我为我创建的表单组件创建了一些上下文。现在,我已经在我的应用程序的根目录中为该... 查看详情

jqueryeasyui怎么使用循环为复选框赋值

参考技术A可以考虑写一个加载时间,然后写一个一般处理程序。 查看详情

jqueryeasyui学习笔记

data-options是jQueryEasyui的一个特殊属性。通过这个属性,我们可以对easyui组件的实例化可以完全写入到html中data-options="region:‘west‘,title:‘导航菜单‘,split:true"data-options="fit:true":自动适应 easyui-accordion创建分类,规定元素折叠... 查看详情

c#中如何将一个表单中的组件转换为其他表单

】c#中如何将一个表单中的组件转换为其他表单【英文标题】:howtouseacomponentfromaformintootherformsinc#【发布时间】:2014-05-0203:06:39【问题描述】:我的Form1中有一个名为x的Xmpp客户端连接。我想在项目的其他表单中使用它。我有7个... 查看详情

更改默认主题,并为表单组件添加样式

】更改默认主题,并为表单组件添加样式【英文标题】:Chagingdefaulttheme,andaddingstylestoformcomponants【发布时间】:2012-08-0404:18:38【问题描述】:我对样式(主题)有几个问题。目前,我在所有窗口和面板中都获得了蓝色主题。我想... 查看详情

jqueryeasyui和jqueryui的区别

jqueryui是jquery开发团队开发,适用于网站式的页面。jqueryeasyui是第三方基于jquery开发,适用于应用程序式的页面。两者的方法调用也略有不同:jqueryui是:$("#divTabs").tabs("remove",index);jqueryeasyui是:$("#divTabs").t... 查看详情

表单组件怎么竖排显示微信小程序

1可以通过设置组件的flex-direction属性为column来实现表单组件的竖排显示。2这是因为flex-direction属性决定了flex容器内部的主轴方向,column表示主轴方向为竖直方向,因此可以实现竖排显示。3另外,还可以通过设置组件的width和heigh... 查看详情