分享

在Ext的界面中js回车响应按钮事件

 空城66 2014-12-08

完整的例子(看不懂的可以拿过去运行,看地懂的就看关键的就行啦!):

如下,一、当鼠标停留在填关键字的textfield的时候,按enter就会执行dosearch()的方法,也就是查询,但是你鼠标如果没定位在textfield的话就不能够实现这个功能了,具体代码看下面的加红色的编码:

在Ext的界面中js回车响应按钮事件

二、点击修改后,按下enter和点击保存的功能一样,这个是通过获取保存按钮的id设置onkeydown事件和保存的一样,代码是加蓝色的编码,

由于两个都是设置了enter按键的快捷键,因此必须进行判断,在打开修改、添加的界面的时候,设置key=true,执行添加、修改界面的enter快捷键的判断就是根据key的值来判断,关闭addupdate界面后就把key设置为false,这样在主界面就不会和原来设置的查询的enter冲突

在Ext的界面中js回车响应按钮事件

 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>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多