关于easyui中的combobox的隐藏和显示网上有很多教程,此次项目中要求的是根据不同的状态隐藏和显示日期时间控件,即easyui-datetimebox,这里采用的是动态追加和删除的方式来实现的。
显示:
这里采用的是jquery中的after和appendTo方法,但是这两个方法还有些细微的差别。
首先看appendTo的方法实现:
var tobj2 = $('<td id=\'timebegin\'><input class=\'easyui-datetimebox\' type=\'text\' name=\'receptbegintime\' id=\'receptbegintime_search\' data-options=\'\'></input></td>').appendTo('#enttr');
$.parser.parse(tobj2);
因为appendTo是在元素内部添加,所以这种方式只适用于在父元素内部追加元素的情况,这里的parse方法是让easyui重新渲染组件,这样就可以加载相应的样式了,否则的样式会丢失(失败)。
下面看after方式:
$('#tddd').after($('<td id=\'tid\' class=\'align-right\' width=\'8%\'>维护卡号:</td>'));
$('#tid').after($('<td id=\'tidd\'></td>'));
var tobj2 = $('<input class=\'easyui-textbox\' type=\'text\' name=\'certnumber\' id=\'dd\' data-options=\'\'></input>').appendTo('#tidd');
$.parser.parse(tobj2.parent());
这里实际上我追加了多个元素,首先在tddd元素
(外面)的后面追加tid元素,再在tid元素的后面追加tidd元素,最后在tidd元素里面追加dd元素。这里要注意到appendTo和after的区别了:前者返回的是被追加元素的父元素,而后者返回的是被追加元素本身,而parse方法实际上是重新渲染传入参数的子元素(不包括元素本身),所以这时候要只传入tobj2是无法使easyui的样式生效的,这里需要用到一个小技巧,就是取after返回元素的父元素,即调用下parent()方法。
删除:
if($('#tid').length>0){
$('#tid').remove();
$('#tidd').remove();
}
这里需要用jquery去判断一个元素是否存在,如果存在采取删除,当然上面的添加操作也要判断,只不过逻辑的相反的。
jquery中判断元素是否为空不能像javascript直接判断,因为$()返回的永远是对象,即if条件永远为真,所以得加一个条件,即判断它的length是否大于0,大于0即表示元素存在,否则不存在。