完整的例子(看不懂的可以拿过去运行,看地懂的就看关键的就行啦!):
如下,一、当鼠标停留在填关键字的textfield的时候,按enter就会执行dosearch()的方法,也就是查询,但是你鼠标如果没定位在textfield的话就不能够实现这个功能了,具体代码看下面的加红色的编码:
二、点击修改后,按下enter和点击保存的功能一样,这个是通过获取保存按钮的id设置onkeydown事件和保存的一样,代码是加蓝色的编码,
由于两个都是设置了enter按键的快捷键,因此必须进行判断,在打开修改、添加的界面的时候,设置key=true,执行添加、修改界面的enter快捷键的判断就是根据key的值来判断,关闭addupdate界面后就把key设置为false,这样在主界面就不会和原来设置的查询的enter冲突
Ext.ns("cms.classesManage"); cms.classesManage.main= function(){
var mainGrid; var detialGrid; var mohu; var selectedclassesid; var selectedclassesname; var selectedontime; var selectedofftime;
var load_mask=null; function wait(str){ load_mask=new Ext.LoadMask("addupdateform",{msg:str}); load_mask.show(); }; function closewait(){ if(!Ext.isEmpty(load_mask)){ load_mask.hide(); load_mask=null; } };
// 创建班次管理界面 function createwin(){ var mainWin=new Ext.Window({ title:'班次管理', width:800, height:'100%',closable : false,draggable : false,resizable : false, layout:'column', items:[mainGrid] }); mainWin.setPosition(40,50); mainWin.show(); } return { init :function(){ doMainGrid(); createwin(); } }
function doMainGrid(){ var listener={ specialkey : function(field, e) { if (e.getKey() == Ext.EventObject.ENTER) { //触发了listener后,如果按回车,执行相应的方法 dosearch(); } } }; var tb=new Ext.Toolbar({ items:[ {xtype:'tbseparator'},'关键字:',{xtype:'textfield',emptyText:'班次ID或班次名称',id:'mohu',listeners : listener}, {xtype:'tbseparator'},{xtype:'tbbutton',text:'查找' ,handler:dosearch}, {xtype:'tbseparator'},{xtype:'tbbutton',text:'添加' ,handler:function(){doaddUpdate('add')}}, {xtype:'tbseparator'},{xtype:'tbbutton',text:'修改' ,handler:function(){doaddUpdate('update')}}, {xtype:'tbseparator'},{xtype:'tbbutton',text:'删除' ,handler:dodelete}, {xtype:'tbseparator'} ] }); var store=new Ext.data.JsonStore({ url : ctx + '/ClassesInfoAction.do?method=getclassesInfo', autoLoad :true, totalProperty :'totalCount', root : 'root', fields : [ {name:'classesId',mapping:'classesId'}, {name:'classesName',mapping:'classesName'}, {name:'ontime',mapping:'ontime'}, {name:'offtime',mapping:'offtime'} ] }); var cm=new Ext.grid.ColumnModel([ {header:'班次ID',dataIndex:'classesId'}, {header:'班次名称',dataIndex:'classesName'}, {header:'上班时间',dataIndex:'ontime',width:150}, {header:'下班时间',dataIndex:'offtime',width:150} ]); mainGrid=new Ext.grid.LockingGridPanel({ width:786,height:300,layout:'fit', frame:true, border:true, enableHdMenu : false,autoScroll:true, loadMask : true, store:store,cm:cm,tbar:tb, bbar : new Ext.PagingToolbar({ pageSize : 20, store : store, displayInfo: true, displayMsg: "显示第 {0} 条到 {1} 条记录,一共 {2} 条记录", emptyMsg:'没有记录' }), viewConfig : {forceFit : false} }); store.on("load",function(store){ if(store.getTotalCount()>0){ mainGrid.getSelectionModel().selectFirstRow(); selectRowEvent(); mainGrid.on('rowclick',function(){ selectRowEvent(); }); } }); } //选中行,触发的事件 function selectRowEvent(){ var record=mainGrid.getSelectionModel().getSelected(); selectedclassesid=record.get("classesId"); selectedclassesname=record.get("classesName"); selectedontime=record.get("ontime"); selectedofftime=record.get("offtime"); } // 添加、修改的界面 function doaddUpdate(id){
var key=true;//key用来判断添加、修改的界面是否打开,打开的话才==true下面的enter键事件才能执行(避免和主界面的enter键冲突) var classesid=new Ext.form.TextField({ fieldLabel : '班次ID', name : 'classesid', disabled : true }); var classesname=new Ext.form.TextField({ fieldLabel : '班次名称', name : 'classesname', disabled : false, allowBlank:false }); var ontime=new Ext.form.TextField({ fieldLabel : '上班时间', name : 'ontime', disabled : false, allowBlank:false }); var offtime=new Ext.form.TextField({ fieldLabel : '下班时间', name : 'offtime', format : 'Y-m-d',disabled : false, allowBlank:false }); var addUpdateForm =new Ext.form.FormPanel({ id:'addupdateform',frame : true,border : false,height:180,labelAlign : 'right',labelWidth : 90, items : [{ layout : 'form', items : [{ layout : 'column',layoutConfig : {columns : 1},defaults : {width : 260}, items : [ {layout : 'form',items :classesid}, {layout : 'form',items :classesname}, {layout : 'form',items :ontime}, {layout : 'form',items :{xtype :'label',width:230,text:'例如:2011-01-01 01:01:01'}}, {layout : 'form',items :offtime}, {layout : 'form',items :{xtype :'label',width:230,text:'例如:2011-01-01 01:01:01'}} ] }] }] }); var addUpdateWin=new Ext.Window({ title:'添加', width:350,modal : true,height:'100%',closable:false,layout:'column', items:[addUpdateForm], tbar : new Ext.Toolbar({ items : [{xtype : 'tbfill'}, {xtype : 'tbseparator'},{text : '保存',id:'addupdatesave',iconCls:'silk_disk',handler :doSave}, {xtype : 'tbseparator'},{text : '取消',iconCls:'silk_cancel',handler :doCancel} ] }) }); addUpdateWin.setPosition(300,130); if(id=='add'){ Ext.Ajax.request({ url : ctx+"/ClassesInfoAction.do?method=getclassesid", method : 'post', params : {}, success : function(response) { var strTemp = response.responseText; var max = strTemp.split("@@")[0]; classesid.setValue(max); }, failure : function(response){} }); } if(id=='update'){ addUpdateWin.setTitle("修改"); classesid.setValue(selectedclassesid); classesname.setValue(selectedclassesname); ontime.setValue(selectedontime); offtime.setValue(selectedofftime); } addUpdateWin.show(); //设置新增和修改的界面里面按enter相当于按"保存"按钮 function document.onkeydown(){ if(event.keyCode==13&&key==true){ document.getElementById("addupdatesave").click(); return false; } } function doSave(){ var classesid2=classesid.getValue(); var classesname2=classesname.getValue(); var classesontime2=ontime.getValue(); var classesofftime2=offtime.getValue(); var date=/^(\d{1,4})\-(\d{1,2})\-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; if(classesname2==null||classesname2==""){ Ext.Msg.alert("提示信息","请完善必填信息!"); }else if(classesontime2.match(date)==null||classesofftime2.match(date)==null){ alert("请输入正确日期格式!"); }else{ if(id=='add'){ wait("正在保存中,请稍后..."); Ext.Ajax.request({ url : ctx+'/ClassesInfoAction.do?method=addclassesInfo', mehtod : 'post', waitMsg: '正在保存,请稍候...', params : { classesid:classesid2, classesname:classesname2, classesontime:classesontime2, classesofftime:classesofftime2 }, success : function(response){ closewait(); Ext.Msg.alert("提示信息","添加成功!"); addUpdateWin.close();
key=false; mainGrid.getStore().load(); }, failure : function(response){ closewait(); Ext.Msg.alert("提示信息","添加失败!"); } }); }else if(id=='update'){ wait("正在保存中,请稍后..."); Ext.Ajax.request({ url : ctx+'/ClassesInfoAction.do?method=updateclassesInfo', mehtod : 'post', waitMsg: '正在保存,请稍候...', params : { classesid:classesid2, classesname:classesname2, classesontime:classesontime2, classesofftime:classesofftime2 }, success : function(response){ closewait(); Ext.Msg.alert("提示信息","修改成功!"); addUpdateWin.close();
key=false; mainGrid.getStore().load(); }, failure : function(response){ closewait(); Ext.Msg.alert("提示信息","修改失败!"); } }); } } } function doCancel(){ addUpdateWin.hide();
key=false; } } // 删除 function dodelete(){ Ext.MessageBox.confirm("确认框","是否要删除?",function(btn){ if(btn=='yes'){ Ext.Ajax.request({ url : ctx+'/ClassesInfoAction.do?method=deleteclassesInfo', mehtod : 'post', waitMsg: '正在保存,请稍候...', params : { classesid:selectedclassesid }, success : function(response){ Ext.Msg.alert("提示信息","删除成功!"); mainGrid.getStore().load(); }, failure : function(response){Ext.Msg.alert("提示信息","删除失败!");} }); }else{} }); } // 查询 function dosearch(){ mohu=Ext.getCmp("mohu").getValue(); mainGrid.getStore().on("beforeload",function(store,options){ store.baseParams={ mohu:mohu } },this); mainGrid.getStore().load({ params : { start : 0, limit : 20 } }); } }(); Ext.onReady(cms.classesManage.main.init,cms.classesManage.main);
上面是classesManage.js的代码,classesManage.jsp的代码是:
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> <%@ include file="/commons/taglibs.jsp"%> <c:set var="appTitle" value="班次管理"/> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head>
<title>${appTitle}</title>
<%@ include file="/commons/meta.jsp" %> <%@ include file="/commons/ext.jsp" %> <script>var flags = "invoicing_tb";</script> <link rel="stylesheet" href="${ctx}/style/style.css" /> <!-- <script type="text/javascript" src="grid.js" defer="defer"></script>--> <script type="text/javascript" src="classesManage.js" defer="defer"></script> </head> <body> <br> </body> </html>
|