为Jquery EasyUI 组件加上“清除”功能

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)有值时的情况(其中 类型 是数据列表下拉框)

(2)无值时的情况

时间: 2024-08-07 04:30:46

为Jquery EasyUI 组件加上“清除”功能的相关文章

struts2+Hibernate4+spring3+EasyUI环境搭建之五:引入jquery easyui

1.下载jquery easyui组件     http://www.jeasyui.com/download/index.php 2.解压 放到工程中  如图 3.jsp引入组件:必须按照如下顺序 <script type="text/javascript" src="jslib/jquery-easyui-1.4.4/jquery.min.js"></script> <!--jquery文件 --><script typ

jQuery EasyUI 为Combo,Combobox添加清除值功能

效果图: 图标 (function($){          //初始化清除按钮     function initClear(target){         var jq = $(target);         var opts = jq.data('combo').options;         var combo = jq.data('combo').combo;         var arrow = combo.find('span.combo-arrow');         

JQuery EasyUI的常用组件

jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一.表单 form提供了各种方法来操作执行表单字段,比如:ajax提交, load, clear等等.当提交表单的时候可以调用validate方法检查表单是否有效. 用法: 使用form标签创建 <form id="ff" method="post"> <

第二百一十三节,jQuery EasyUI,NumberBox(数值输入框)组件

jQuery EasyUI,NumberBox(数值输入框)组件 功能:只能输入数值,和各种数值的计算 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 NumberBox(数值输入框)组件的使用方法,这个组件依赖 于 ValidateBox(验证框)组件. 一.加载方式 class 加载方式 <input type="text" class="easyui-numberbox" value="10

为JQuery EasyUI 表单组件增加“焦点切换”功能

1.背景说明 在使用 JQuery  EasyUI 各表单组件时,实际客户端页面元素是由 JQuery EasyUI 生成的,元素的焦点切换,虽然 Tab 键可以正常用,但顺序控制属性 tabindex 不起作用,因为页面看到的元素,是生成的,没有tabindex 属性,而真实的元素被隐藏了.本文通过一个自定义函数,实现Tab 和 回车键的焦点切换功能. 2.函数定义 通过捕获窗口按件,对回车和Tab键进行了热点切换处理.先根据当前焦点,获取需要tabindex 属性,加1后为下一焦点无素的属性

jQuery EasyUI Datagrid组件的完整的基础DOM结构

该日志由 世纪之光 于2年前发表在datagrid分类下 转载: jQuery EasyUI Datagrid组件的完整的基础DOM结构 | WebUI框架使用参考+ http://www.easyui.info/archives/1157.html 关键字: datagrid源码分析, datagrid结构, easyui源码分析 标题可能有点长,什么叫“完整的基础DOM结构”,这里“基础”的意思是指这个结构不依赖具体数据,不依赖Datagrid的view属性,只要存在Datagrid实例就会

Jquery easyUi Droppable(放置)组件

生活就是不断的让自己活下去,而我们如何活下去,就是靠不断的完善自己.所以今天我们来看看Jquery easyUi的Droppable(放置)组件. 一.加载方式 在使用放置组件时,有一个前提条件,那就是需要有一个可以拖拽的元素,不然我们的放置组件将毫无意义.所以我们这里默认有一个ID为"bb"的元素是设置了课拖拽的. 1.css样式加载方式 <div id="box" class="easyui-droppable" data-option

第二百零八节,jQuery EasyUI,SplitButton(分割按钮菜单)组件

jQuery EasyUI,SplitButton(分割按钮)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 SplitButton(分割按钮)组件的使用方法,这个组件依赖 于 Menu(菜单)组件和 LinkButton(按钮)组件. 注意:SplitButton(分割按钮)组件与,MenuButton(菜单按钮)是一样的,不同是(分割按钮)组件多了一个分隔符 一加载方式 class 加载方式 <a href="javascript:void

第二百零九节,jQuery EasyUI,Pagination(分页)组件

jQuery EasyUI,Pagination(分页)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Pagination(分页)组件的使用方法,这个组件依赖于 LinkButton(按钮)组件.