欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jQuery EasyUI 组件加上“清除”功能实例详解

程序员文章站 2023-02-21 12:33:18
1、背景     在使用 easyui 各表单组件时,尤其是使用 combobox(下拉列表框)、datebox(日期输入框)、dateti...

1、背景

    在使用 easyui 各表单组件时,尤其是使用 combobox(下拉列表框)、datebox(日期输入框)、datetimebox(日期时间输入框)这三个组件时,经常有这样的需求,下拉框或日期只允许选择、不允许手动输入,这时只要在组件选项中加入 editable:false 就可以实现,但有一个问题,就是:一旦选择了,没办法清空。经过研究,可以用一个变通的解决方案:给组件加上一个“清除”按钮,当有值是,显示按钮,点击按钮可清空值,当无值是,隐藏按钮。

2、函数定义

定义js方法,为 easyui 中一些常用组件添加'清除'按钮及功能。共计6个:

/*
 * 为‘文本框'列表添加‘清除'图标
 * 该实现使用了 onchange 事件,如果用户需要该事件,可传入自定义函数,会自动回调 。
 */
function addclear4textbox(theid,onchangefun)
{
 var theobj = $(theid);
 //根据当前值,确定是否显示清除图标
 var showicon = function(){  
  var icon = theobj.textbox('geticon',0);
  if (theobj.textbox('getvalue')){
   icon.css('visibility','visible');
  } else {
   icon.css('visibility','hidden');
  }
 };
 theobj.textbox({
  //添加清除图标
  icons:[{
   iconcls:'icon-clear',
   handler: function(e){
    theobj.textbox('clear');
   }
  }],
  //值改变时,根据值,确定是否显示清除图标
  onchange:function(){
   if(onchangefun)
   {
    onchangefun();
   }
   showicon();
  }
 }); 
 //根据目前值,确定是否显示清除图标
 showicon();
}
/*
 * 为‘下拉列表框'添加‘清除'图标
 * 该实现使用了 onchange 事件,如果用户需要该事件,可传入自定义函数,会自动回调 。
 */
function addclear4combobox(theid,onchangefun)
{
 var theobj = $(theid);
 //根据当前值,确定是否显示清除图标
 var showicon = function(){  
  var icon = theobj.combobox('geticon',0);
  if (theobj.combobox('getvalue')){
   icon.css('visibility','visible');
  } else {
   icon.css('visibility','hidden');
  }
 };
 theobj.combobox({
  //添加清除图标
  icons:[{
   iconcls:'icon-clear',
   handler: function(e){
    theobj.combobox('clear');
   }
  }],
  //值改变时,根据值,确定是否显示清除图标
  onchange:function(){
   if(onchangefun)
   {
    onchangefun();
   }
   showicon();
  }
 }); 
 //初始化确认图标显示
 showicon();
}
/*
 * 为‘数据表格下拉框'添加‘清除'图标
 * 该实现使用了 onchange 事件,如果用户需要该事件,可传入自定义函数,会自动回调 。
 */
function addclear4combogrid(theid,onchangefun)
{
 var theobj = $(theid);
 //根据当前值,确定是否显示清除图标
 var showicon = function(){  
  var icon = theobj.combogrid('geticon',0);
  if (theobj.combogrid('getvalue')){
   icon.css('visibility','visible');
  } else {
   icon.css('visibility','hidden');
  }
 };
 theobj.combogrid({
  //添加清除图标
  icons:[{
   iconcls:'icon-clear',
   handler: function(e){
    theobj.combogrid('clear');
   }
  }],
  //值改变时,根据值,确定是否显示清除图标
  onchange:function(){
   if(onchangefun)
   {
    onchangefun();
   }
   showicon();
  }
 }); 
 //初始化确认图标显示
 showicon();
}
/*
 * 为‘数值输入框'添加‘清除'图标
 * 该实现使用了 onchange 事件,如果用户需要该事件,可传入自定义函数,会自动回调 。
 */
function addclear4numberbox(theid,onchangefun)
{
 var theobj = $(theid);
 //根据当前值,确定是否显示清除图标
 var showicon = function(){  
  var icon = theobj.numberbox('geticon',0);
  if (theobj.numberbox('getvalue')){
   icon.css('visibility','visible');
  } else {
   icon.css('visibility','hidden');
  }
 };
 theobj.numberbox({
  //添加清除图标
  icons:[{
   iconcls:'icon-clear',
   handler: function(e){
    theobj.numberbox('clear');
   }
  }],
  //值改变时,根据值,确定是否显示清除图标
  onchange:function(){
   if(onchangefun)
   {
    onchangefun();
   }
   showicon();
  }
 }); 
 //初始化确认图标显示
 showicon();
}
/*
 * 为‘日期选择框'添加‘清除'图标
 * 该实现使用了 onchange 事件,如果用户需要该事件,可传入自定义函数,会自动回调 。
 */
function addclear4datebox(theid,onchangefun)
{
 var theobj = $(theid);
 //根据当前值,确定是否显示清除图标
 var showicon = function(){  
  var icon = theobj.datebox('geticon',0);
  if (theobj.datebox('getvalue')){
   icon.css('visibility','visible');
  } else {
   icon.css('visibility','hidden');
  }
 };
 theobj.datebox({
  //添加清除图标
  icons:[{
   iconcls:'icon-clear',
   handler: function(e){
    theobj.datebox('clear');
   }
  }],
  //值改变时,根据值,确定是否显示清除图标
  onchange:function(){
   if(onchangefun)
   {
    onchangefun();
   }
   showicon();
  }
 }); 
 //初始化确认图标显示
 showicon();
}
/*
 * 为‘日期时间选择框'添加‘清除'图标
 * 该实现使用了 onchange 事件,如果用户需要该事件,可传入自定义函数,会自动回调 。
 */
function addclear4datetimebox(theid,onchangefun)
{
 var theobj = $(theid);
 //根据当前值,确定是否显示清除图标
 var showicon = function(){  
  var icon = theobj.datetimebox('geticon',0);
  if (theobj.datetimebox('getvalue')){
   icon.css('visibility','visible');
  } else {
   icon.css('visibility','hidden');
  }
 };
 theobj.datetimebox({
  //添加清除图标
  icons:[{
   iconcls:'icon-clear',
   handler: function(e){
    theobj.datetimebox('clear');
   }
  }],
  //值改变时,根据值,确定是否显示清除图标
  onchange:function(){
   if(onchangefun)
   {
    onchangefun();
   }
   showicon();
  }
 }); 
 //初始化确认图标显示
 showicon();
}

3、使用

用法格式如下:

(1)addclear4textbox("#name",namechangedo); //文本框,同时传入了回调函数

(2)addclear4combobox("#state\\.id"); //下拉列表框

(3)addclear4combogrid("#type\\.id"); //数据表格下拉框

(4)addclear4numberbox("#intnum2"); //数值输入框

(5)addclear4datebox("#thedate2"); //日期选择框

(6)addclear4datetimebox("#thetime2"); //日期选择框

注:函数的实现使用了 onchange 事件,如果需要使用该事件执行某些操作,可传入自定义函数,会自动回调 ,参见(1)。

<script>
//名称改变时执行的一些操作。(演示清除操作回调)
var namechangedo = function(){
 //alert("改变了...");
}
$(function(){ 
 addclear4textbox("#code");
 addclear4textbox("#name",namechangedo);
 addclear4combobox("#city");
 addclear4combobox("#state\\.id");
 addclear4combogrid("#type\\.id");
 addclear4combobox("#hobby");
 addclear4numberbox("#intnum2");
 addclear4numberbox("#doublenum1");
 addclear4numberbox("#doublenum2");
 addclear4datebox("#thedate2");
 addclear4datetimebox("#thetime2");
 addclear4textbox("#remark"); 
});
</script>

4、效果展示

(1)有值时的情况(其中 类型 是数据列表下拉框)

jQuery EasyUI 组件加上“清除”功能实例详解

(2)无值时的情况

jQuery EasyUI 组件加上“清除”功能实例详解

以上所述是小编给大家介绍的jquery easyui 组件加上“清除”功能实例详解,希望对大家有所帮助