盖住那个下拉框!EasyUI遮罩使用方法简介

 

EasyUI的遮罩是什么?

当EasyUI执行查询时,页面会出现一个遮罩,把页面遮住,在此期间不能操作。

当EasyUI打开一个新的窗口时,页面会出现一个遮罩,把父页面遮住,不能操作父页面,但新打开的页面可以操作。

就像下面这样:

如果这个时候查看页面的HTML元素,会发现有这么两个div标签:

class分别是EasyUI的datagrid-maskdatagrid-mask-msg

datagrid-mask是遮住页面的遮罩

datagrid-mask-msg是中间显示的文字

 

遮罩的作用

今天重点说datagrid-mask,这个控件可以盖住页面的某些元素,使鼠标不能点击。

EasyUI一般都是用这个遮罩覆盖整个页面,但我们可以用他来覆盖我们想盖住的东西。

这个功能有点意思,因为有的时候我们不想让用户修改页面上的某些控件的内容,比如文本框、下拉框等,然而并不是所有的控件都有readonly属性:比如select下拉框,和EasyUI的combobox下拉框控件就不能设置readonly。

虽然可以用disable属性来实现不可点击的效果,但是这个属性有点不方便,比如提交表单的时候不会提交disable的控件值。

 

示例代码

比如我想遮住一个文本框:

在页面代码中有一个input

<td>时间:</td>

<td class="value">

         <input style="width: 150px" id="Time" name="Time">

</td>

正常情况下他是这样的:

然后我们定义两个JavaScript函数:

//通用覆盖控件,参数是元素id

function blockCommon(id){

         if(!document.getElementById("datagrid-mask-"+id)){

                   $("<div id=\"datagrid-mask-"+id+"\" class=\"datagrid-mask\"></div>").css({

                            display: "block",

                            width: $("#"+id).width(),

                            height: $("#"+id).height(),

                            top:$("#"+id).offset().top,

                            left:$("#"+id).offset().left

                   }).appendTo("body");

         }

        

}

//通用解除覆盖控件,参数是元素id

function showCommon(id){

         if(document.getElementById("datagrid-mask-"+id)){

                   $('#datagrid-mask-'+id).remove();

         }

}

 

当调用blockCommon ('Time')方法时,文本框就会被一个灰色的罩子罩住,鼠标不能点击,像下面这样:

而当调用showCommon ('Time')方法时,这个遮罩会被去掉。

 

注:

  1. 代码中的document.getElementById("datagrid-mask-"+id)是判断这个遮罩是否已经存在,如果存在了就不会再添加。
  2. 这里不能用jquery的$("#Time"),因为这个永远都是true。
  3. 遮住下拉框、遮住一个表格等等也都是一样的。

 

缺点

  1. 在控件上加遮罩的方式虽然让鼠标不能点击,但是不能防止键盘操作,用Tab键依然可以在页面的控件间切换并修改。
  2. 添加了遮罩之后,如果又修改了控件的大小,遮罩不会跟随控件一起变大或变小,也就是说会露出来。

 

以上

当你需要实现联级下拉框时,可以使用 JavaScript 来动态加载下拉框选项。下面是一个简单的示例代码: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>联级下拉框示例</title> </head> <body> <label>省份:</label> <select id="province"> <option value="">请选择省份</option> <option value="江苏">江苏</option> <option value="浙江">浙江</option> <option value="上海">上海</option> </select> <label>城市:</label> <select id="city"> <option value="">请选择城市</option> </select> <script> var cityData = { '江苏': ['南京', '苏州', '无锡'], '浙江': ['杭州', '宁波', '温州'], '上海': ['上海市'] }; var province = document.getElementById('province'); var city = document.getElementById('city'); province.addEventListener('change', function() { var selected = province.options[province.selectedIndex].value; if (selected) { var cities = cityData[selected]; city.innerHTML = ''; for (var i = 0; i < cities.length; i++) { var option = document.createElement('option'); option.value = cities[i]; option.innerHTML = cities[i]; city.appendChild(option); } } else { city.innerHTML = '<option value="">请选择城市</option>'; } }); </script> </body> </html> ``` 在这个示例中,我们定义了一个 cityData 对象,用来存储各省份对应的城市信息。然后,我们在页面中创建了两个下拉框,一个用来显示省份,另一个用来显示城市。在省份下拉框的 onchange 事件中,我们根据选择的省份动态加载城市信息,并将城市信息填充到城市下拉框中。 需要注意的是,cityData 对象中的数据可以通过后台接口获取,也可以直接写在 JavaScript 中。在实际开发中,还需要考虑数据的缓存和异步加载等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值