JQuery专栏之十————工具栏、菜单和消息框控件的使用

10. 工具栏、菜单和消息框控件的使用。

EasyUI菜单由EasyUI-menubutton类指定。菜单是树型结构,即每个菜单项(menu item)之下还可以有子菜单项。主菜单和子菜单可以通过<div>的嵌套来实现,也可以通过主菜单的data-options选项中定义menu属性来指定子菜单。菜单项的图标可由iconCls属性指定,菜单项之间的分隔符由menu-sep类表示。简单的菜单定义举例如下:

<div id="mm" class=“easyui-menu" style="width:120px;">

    <div>New</div>

    <div>

                   <span>Open</span>

                   <div style="width:150px;">

                            <div><b>Word</b></div>

                            <div>Excel</div>

                            <div>PowerPoint</div>

                   </div>

    </div>

    <div data-options="iconCls:'icon-save'">Save</div>

    <div class="menu-sep"></div>

    <div>Exit</div>

</div>

菜单项对应的事件可以在主菜单(即class=“easyui-menu"的菜单)的data-options中指定,也可以按下列方法定义:

$('#mm').menu({

    onClick:function(item){

              alert(item.id);

    }

});

消息框(messager)提供不同样式的信息提示框,包括警示(alert)、确认(confirm)、提示(prompt)、进展(progress)等。所有的消息框都是异步的。用户可以在与消息框交互后使用回调函数来完成一些动作。

本例在页面中定义一个工具栏、5个linkbutton按钮、一个菜单按钮及其下拉菜单条、一个右键菜单。在“新增”、“删除”和“保存”按钮事件中使用$.messager消息框进行信息提示和操作确认。本例程序运行界面如图2-8所示,其主要程序实现方法与过程如下:

图2-8  工具栏、菜单和消息框程序运行界面

①首先使用layout控件将屏幕分成上下两部分,在屏幕上方定义一个工具栏;在工具栏中定义若干个EasyUI-linkbutton按钮和一个EasyUI-menubutton菜单(“帮助”),每个按钮可定义一个事件。

<div id='layout' class=“easyui-layout" style="height:500px">

<div id='toolbar' class='EasyUI-panel' data-options="region:'north'"

style="overflow:hidden; background-color: #E0ECFF; height:30px; padding: 1px 1px 1px 10px;">

           <a href="#" class="btn-separator"></a>

           <a href="#" id="btnadd" xtype="button" class=“easyui-linkbutton" data-options="iconCls:'addIcon',

plain:true, onClick:fn_add" style="">新增</a>

           <a href="#" id="btnedit" xtype="button" class=“easyui-linkbutton" data-options="iconCls:'editIcon',

plain:true" style="">修改</a>

           <a href="#" class="btn-separator"></a>

           <a href="#" id="btndelete" xtype="button" class=“easyui-linkbutton" data-options="iconCls:'deleteIcon',

plain:true, onClick:fn_delete" style="">删除</a>

           <a href="#" class="btn-separator"></a>

           <a href="#" id="btnsave" xtype="button" class=“easyui-linkbutton" data-options="iconCls:'saveIcon',

plain:true, onClick:fn_save" style="">保存</a>

           <a href="#" class="btn-separator"></a>

           <a href="#" id="btnrefresh" xtype="button" class=“easyui-linkbutton"

data-options="iconCls:'refreshIcon',

plain:true" style="">刷新</a>

           <a href="#" class="btn-separator"></a>

           <a href="#" xtype="button" class=“easyui-menubutton" data-options="menu:'#btnhelp_menuitem',

iconCls:'helpIcon'">帮助</a>

</div>

<div id='bottom' data-options="region:'center'" style="padding: 2px 0px 0px 2px; "></div>

</div>

②使用层嵌套方法,定义上面“帮助”菜单(btnhelp_menuitem)的两个子菜单项。

<div id="btnhelp_menuitem" style="width:150px;">

                   <div id="btnbookonline" data-options="iconCls:'pdfIcon'">操作说明</div>

                   <div id="btndemo" data-options="iconCls:'wordIcon'">实例演示</div>

</div>

③定义一个右键菜单myMenu1及其它的点击事件fn_myMenu1Click。该右键菜单的子菜单项通过appendItem()方法在javascript语句中动态添加实现。

<div id="myMenu1" class=“easyui-menu" data-options="onClick: fn_myMenu1Click" style="width: auto;"></div>

④利用appendItem()方法,逐个添加右键菜单myMenu1的六个子菜单项和两个菜单的分隔线。

          $("#myMenu1").menu('appendItem', {text: '新增结点',id: 'mnadd', iconCls:'addIcon'} );

          $("#myMenu1").menu('appendItem', {text: '修改记录',id: 'mnedit', iconCls:'editIcon'} );

          $("#myMenu1").menu('appendItem',

                   {text: '删除记录',id: 'mndelete', iconCls:'deleteIcon', onclick: function(){ fn_delete(); }});

          $("#myMenu1").menu('appendItem', {separator:true});

          $("#myMenu1").menu('appendItem',

                   {text: '保存记录',id: 'mnsave', iconCls:'saveIcon', onclick: function(){ fn_save(); }});

          $("#myMenu1").menu('appendItem',{separator:true});

          $("#myMenu1").menu('appendItem',{text: '重置',id: 'mnreset', iconCls:'resetIcon'} );

          $("#myMenu1").menu('appendItem',{text: '刷新',id: 'mnrefresh', iconCls:'refreshIcon'});

⑤绑定(bind)“刷新”按钮和菜单的click事件,这是另一种定义按钮和菜单事件的方法。

$("#btnrefresh,#mnrefresh").bind('click', function(e){ fn_refresh(e); });

⑥定义表单的右键点击事件。在表单myForm1中通过绑定其contextmenu事件,采用菜单的show()方法,实现右键菜单的弹出和触发。这里, e.preventDefault()用于禁止系统原有菜单的显示。

$('#myForm1').bind('contextmenu',function(e){

     e.preventDefault();  //关闭系统原有的右键菜单

     $('#myMenu1').menu('show', {

              left: e.pageX,

              top: e.pageY

     });

});

⑦编写各按钮和菜单的click点击事件。点击“新增”按钮,使用$.messager.show()缓缓弹出一个消息框;点击“保存”按钮,使用$.messager.alert()弹出一个信息提示框;点击“删除”按钮,使用$.messager.confirm()弹出一个信息确认框;点击“重置”菜单,在重置表单各个控件值之后,使用$.messagershow()缓缓弹出一个信息提示框,2秒钟后消息框自动消失。

       function fn_add(){

                   $.messager.show({

                            title:'系统提示',

                            msg:'系统已切换至新增记录模式。<br>表单已经清空。',

                            showType:'show',

                            width:200,

                            timeout:0,

                            style:{

                                     top: 100

                            }

                   });

         }

         function fn_save(){

                   $.messager.alert('系统提示','数据已经保存成功!','info');  //icon可选项:error、question、warning

         }

         function fn_delete(){

                   $.messager.confirm('系统提示','是否确定删除记录?',function(r){

                       if (r){

                           alert('确定删除');

                       }

                   });

         }

         function fn_refresh(){

                   alert('refresh');

         }

         function fn_myMenu1Click(item){

                   if (item.id=='mnreset'){

                            $("#main")[0].reset();

                            $.messager.show({

                                     title:'系统提示',

                                     width:200,

                                     msg:'表单数据已经被重置。',

                                     timeout:2000,

                                     showType:'slide'

                            }); 

                   }

         }

猜你喜欢

转载自blog.csdn.net/qq_42618969/article/details/89145897