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)无值时的情况

5、进一步扩展

增加自动添加“清除”功能的函数,省去每个组件手动添加的麻烦。

(1)自动添加函数定义

//自动填加清除功能 (组件需要增加 addClear属性 )
function autoAddClear()
{
var arr = $("input[addClear]");
for(var i=0;i<arr.length;i++)
{
var oneInput = $(arr[i]);
var theId = oneInput.attr("id");
theId = theId.replace('.', '\\.');
var theClass = oneInput.attr("class"); if(theClass.indexOf("easyui-textbox") != -1 )
{//文本框
addClear4TextBox("#"+theId);
}
else if(theClass.indexOf("easyui-combobox") != -1 )
{//下拉列表框
addClear4Combobox("#"+theId);
}
else if(theClass.indexOf("easyui-combogrid") != -1 )
{//数据表格下拉框
addClear4Combogrid("#"+theId);
}
else if(theClass.indexOf("easyui-numberbox") != -1 )
{//数值输入框
addClear4Numberbox("#"+theId);
}
else if(theClass.indexOf("easyui-datebox") != -1 )
{//日期选择框
addClear4Datebox("#"+theId);
}
else if(theClass.indexOf("easyui-datetimebox") != -1 )
{//日期选择框
addClear4Datetimebox("#"+theId);
}
}
}

(2)使用时,各组件上添加 addClear 属性。

(3)使用自动添加

$(function(){
autoAddClear(); //为各组件自动填加‘清除’功能(组件需要增加 addClear属性 )
addClear4TextBox("#name",nameChangeDo); //对于需要使用OnChange事件的组件,单独手动填加
});

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

  1. datebox清除按钮,datebox加上清除按钮,easyui datebox加上清除按钮

    datebox加上清除按钮,easyui datebox加上清除按钮 >>>>>>>>>>>>>>>>& ...

  2. FastAdmin 开发学习给输入框加上清除功能

    FastAdmin 开发学习给输入框加上清除功能 在社区上有小伙伴询问如果给输入框加上清除功能,因为有时修重新搜索时需要将输入框的内容快速清除,所以这个功能对用户非常友好. 如上图所示这种. 我看了一 ...

  3. 为JQuery EasyUI 表单组件加上“清除”功能

    1.背景 在使用 EasyUI 各表单组件时,尤其是使用 ComboBox(下拉列表框).DateBox(日期输入框).DateTimeBox(日期时间输入框)这三个组件时,经常有这样的需求,下拉框或 ...

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

    1.下载jquery easyui组件     http://www.jeasyui.com/download/index.php 2.解压 放到工程中  如图 3.jsp引入组件:必须按照如下顺序 ...

  5. web项目中引入jquery easyui

    jQuery easyui是一个基于jquery的用户界面插件集合,可以做出各种炫酷页面效果,大中型项目都可以使用些框架,非常好用,而且它有中文网,提供了大量的demo.下面我们看怎么将它引入到项目中 ...

  6. 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件

    jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...

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

    jQuery EasyUI,NumberBox(数值输入框)组件 功能:只能输入数值,和各种数值的计算 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI ...

  8. 第二百一十二节,jQuery EasyUI,Combo(自定义下拉框)组件

    jQuery EasyUI,Combo(自定义下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Combo(自定义下拉框)组件的使用方 ...

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

    1.背景说明 在使用 JQuery  EasyUI 各表单组件时,实际客户端页面元素是由 JQuery EasyUI 生成的,元素的焦点切换,虽然 Tab 键可以正常用,但顺序控制属性 tabinde ...

随机推荐

  1. 《深入理解java虚拟机-高效并发》读书笔记

    Java内存模型与线程 概述 多任务处理在现代计算机操作系统中几乎已是一项必备的功能,多任务运行是压榨手段,就如windows一样,我们使劲的压榨它运行多个任务,俱要high又要耍.并发则是另外一种更 ...

  2. Redis 安装与初体验

    一.Redis简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...

  3. hdoj 1231 最大连续子列和

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  4. 2017-02-19C#基础 - 数据类型与类型转换

    数据类型 基本数据类型 1)整形:byte  short  int  long 整数类型 2)浮点型:fioat(.NET类型 Single 值后面要加f float = 10.5f;)  doubl ...

  5. 用json传值时,最后一个不加逗号

    <javascript> $('.obj').css( 'position':'relative', 'top':'100px', 'left':'100px' ); </javas ...

  6. Objective-C日记-之NSPredicate

    谓语:NSPredicate 1,概述: 用于设置指定的过滤器的条件,通俗的理解就是设置选择的条件,再对指定的对象应用这个条件 2,用法: a,首先设置谓语. NSPredicate *predica ...

  7. 通过 Composer Github Packagist制作发布共享PHP包

    参考来源: https://laravel-china.org/topics/1002 https://rivsen.github.io/post/how-to-publish-package-to- ...

  8. .Net程序员学用Oracle系列(22):分析函数(OVER)

    1.函数语法 1.1.语法概述 1.2.窗口详解 1.2.1.ROWS 窗口 1.2.2.RANGE 窗口 2.函数用法 2.1.普通统计类函数 2.2.数据排序类函数 2.3.数据分布类函数 2.4 ...

  9. MVC支付宝PC网站接口对接

    PC网站支付接口,请参考支付宝官方文档:https://b.alipay.com/signing/productSet.htm?navKey=all 1.需要提供签约账号.商户密钥 2.代码实现: 支 ...

  10. jQuery遮罩插件 jquery.blockUI.js

    Overview jQuery BlockUI 插件可以在不同锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为.该插件激活时,会组织用户在页面进行的操作,直到插件被关闭.BlockUI通过向DO ...