easyUI可编辑表格编辑器添加事件
来源:互联网 发布:手绘卡通地图软件 编辑:程序博客网 时间:2024/06/05 05:37
在使用easyUI的可编辑表格时,可以为编辑器添加键盘事件处理,这样就可以直接通过键盘进行操作,大大提升编辑效率。比如说在编辑完一行时,可以按下回车就自动添加新行而不用去点击添加行按钮,在编辑到一半想取消编辑时,可以按键盘的方向键↑从而取消编辑。
为编辑器添加事件,有两种方式。
方式一:通过api获取对应的编辑器jQuery对象,为该对象添加事件
方式二:通过类选择器选中对应的编辑器,再为它添加事件(当前编辑行有一个class是其他行没有的)
需要注意的是,方式一通过api获取编辑器的jQuery对象时,api是通过editor.target来获取的,但在1.5版本的easyUI中,这是获取不到真正的编辑器对象的,通过浏览器的开发者工具查看代码发现,每个编辑器大概都是这种结构
<input type="text" class="datagrid-editable-input textbox-f" style="display: none;"><span class="textbox textbox-invalid" style="width: 322px; height: 24px;"> <input id="_easyui_textbox_input2" type="text" class="textbox-text validatebox-text validatebox-invalid textbox-prompt" autocomplete="off" tabindex="" placeholder="" style="text-align: start; margin: 0px; padding-top: 0px; padding-bottom: 0px; height: 22px; line-height: 22px; width: 320px;" title=""> <input type="hidden" class="textbox-value" value=""></span>
editor.target 获取到的实际上是<input type="text" class="datagrid-editable-input textbox-f" style="display: none;">
而真正用于输入的对象是span标签里面第一个input,所以应该为这个input添加事件而不是editor.target。
方式一代码:
var editors = $("#keyEventGrid").datagrid("getEditors",index);for(var i=0; i<editors.length; i++){ var editor = editors[i]; $(editor.target.siblings("span").children("input")) .on("keydown",function(e){ var code = e.keyCode || e.which; if(code == 13){ addRow("keyEventGrid");//添加新行 }else if(code == 38){ cancelRow("keyEventGrid");//取消编辑行 } })}
方式二:
$(".datagrid-row-editing .textbox-text").on("keydown",function(e){ var code = e.keyCode || e.which; if(code == 13){ addRow("keyEventGrid"); }else if(code == 38){ cancelRow("keyEventGrid"); }});
完整示例代码
<!DOCTYPE><html> <head> <meta charset="UTF-8"> <title>可编辑表格编辑器自定义事件</title> <link rel="stylesheet" type="text/css" href="../bootstrap/css/bootstrap.css"/> <link rel="stylesheet" type="text/css" href="../easyui1.5/themes/bootstrap/easyui.css"/> <link rel="stylesheet" type="text/css" href="../easyui1.5/themes/icon.css"/> <script src="../easyui1.5/jquery.min.js" type="text/javascript" charset="utf-8"></script> <script src="../easyui1.5/jquery.easyui.min.js" type="text/javascript" charset="utf-8"></script> <script src="../easyui1.5/jquery.edatagrid.js" type="text/javascript" charset="utf-8"></script> <script src="../easyui1.5/locale/easyui-lang-zh_CN.js" type="text/javascript" charset="utf-8"></sctipr> <style type="text/css"> /** * 解决在编辑时看不到内容的问题,这是由于使用easyUI的bootstrap主题导致的 */ .datagrid-row.datagrid-row-editing.datagrid-row-selected{ background: #F3F3F3; color: #333333; } </style> </head> <body> <div class="container-fluid"> <div class="row"> <div class="col-sm-12"> <table id="keyEventGrid" style="width: 100%;height: 400px;"></table> <div id="gridToolbar" class="container-fluid"> <div class="row"> <div class="col-sm-12"> <a class="btn btn-sm btn-primary pull-right" onclick="addRow('keyEventGrid')">增加</a> </div> </div> </div> </div> </div> </div> <script> $(function(){ $("#keyEventGrid").edatagrid({ toolbar:"#gridToolbar", singleSelect:true, fitColumns:true, columns:[[ {field:"userName",title:"用户名",width:80,eidtor:{type:"textbox",options:{required:true}}}, {field:"age",title:"年龄",width:40,editor:"numberbox",align:"right"}, {field:"cell",title:"手机",width:60,editor:{type:"textbox",options:{required:true}}}, {field:"qq",title:"QQ",width:60,editor:"textbox"} ]], onAdd:function(index,row){ //使第一个编辑器获取焦点 $(".datagrid-row-editing .textbox-text")[0].focus(); //使用方式一或方式二注册事件 }, onSave:function(index,row){ //在添加新行时,onSave事件会被触发执行 //可以在这里添加一个保存的方法,在添加新行时,将上一行编辑的内容保存到数据库 //也可以直接在edatagrid添加一个saveUrl属性,这样不用写保存方法,也可以保存,缺点是保存时只能将row数据传到后台而不能添加其他数据 //当然,每编辑一行就保存一行的做法可能不太好,可以不处理这个保存的事件,在工具栏上添加一个保存按钮,当编辑完所有行时,点击保存按钮一次性保存 } }); }); function addRow(grid){ $("#"+grid).edatagrid("addRow"); } function cancelRow(grid){ $("#"+grid).edatagrid("cancelRow"); } </script> </body></html>
阅读全文
0 0
- easyUI可编辑表格编辑器添加事件
- easyui可编辑表格编辑器设置值
- easyui 可编辑表格
- EasyUI-可编辑的表格
- 关于easyui 可编辑表格使用心得
- easyui datagrid 编辑器添加事件
- easyui 可编辑表格edatagrid中,日期输入框datebox编辑器方法setValue与getValue应用要点
- easyui 为表格行添加事件
- EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他
- jquery-easyui 中将表格变为可编辑的
- jQuery-easyUI的使用:datagrid实现可编辑表格
- 关于Easyui 可编辑的数据表格中的计算
- easyui表格编辑
- EasyUI datagrid可编辑
- easyui 可编辑单元格
- 可编辑表格TableCell
- Javascript:可编辑表格
- 可编辑的表格
- robot ride使用jquery定位元素
- 24452#0: open() "/var/log/nginx/error.log" failed (13: Permission denied)
- java NIO系列教程(五)
- 离散傅里叶变换
- Linux ALSA声卡驱动之二:声卡的创建
- easyUI可编辑表格编辑器添加事件
- 创建dblink与tnsnames的配置
- Git管理多个SSH密钥,Git多帐号配置
- RecyclerView的插入和删除
- java NIO系列教程(六)
- asp.net后台调用JS方法
- Android-UI开发之Adapter及Adapter控件
- (原创)分享自己写的几个工具类(五)时间计算工具类
- 标准C++中的string类的用法总结