通过报表类型,动态加载公司名称,不同的报表类型,同一个公司,所带的value值是不同的。
自定义一个属性datatypeid 绑定到公司名称上面。
问题:
layui中,hide,show是无法使用的,form.render(‘select’)的时候,select中display=none已经添加上去。但是渲染的时候,显示是用dl+div渲染显示的。
不起作用,没用,hide后,前台依旧显示。也不想通过ajax请求数据库获取加载。
解决办法:
1,使用disabled,让其不可用
可以使用,只是禁用了,还可以看到,体现效果不好,这里的datatypeid是自定义属性,通过另外一个select来判断哪些显示.哪些来隐藏。
2,因为公司名称是不同类型,全部一次性加载出来了。我们过滤一下。动态显示匹配的内容。
解决办法,初始化的时候偶,查询到,复制一份,选择的时候,动态添加
初始化的时候,我们复制一份,挂载到window上面。后面做匹配使用。初始化的时候拷贝一份。后面需要动态添加
function init(){
let d_type = $("#data_type").find("option:selected").val();
console.log(d_type);
$("#company_id").removeAttr("disabled");
window.companyselect= $("#company_id").clone();
//删除所有的option
$("#company_id").find('option[datatypeid]').remove();
//查找出需要显示的option并复制
var options = companyselect.find("option[datatypeid="+d_type+"]").clone();
//将需要显示的option添加到select中
$("#company_id").append(options);
//因为option.remove()不会刷新控件,需要将新的option切换上去
//这里排除了options.size() == 0的情况
$("#company_id").find('option').eq(0).attr("selected",true);
// $("#company_id option[datatypeid != "+d_type+"]").attr("disabled","disabled");
// $("#company_id option[datatypeid = "+d_type+"]").removeAttr("disabled");
// let mm = $("#company_id option[datatypeid != "+d_type+"]").html();
// console.log(mm);
// $("#company_id option[datatypeid = "+d_type+"]").removeClass("layui-hide");
form.render('select'); //刷新select选择框渲染
}
$(function(){
console.log('页面加载完毕');
init();
})
html代码;
下面展示一些 内联代码片
。
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">报表类型</label>
<div class="layui-input-inline" id="data_type">
<select name="data_type" lay-filter='data_type' >
{{{$datatype}}}
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">公司名称</label>
<div class="layui-input-inline" style="width: 320px;">
<select name="company_id" lay-filter='company_id' id="company_id" >
<option value="">不选</option>
{{{$company}}}
</select>
</div>
</div>
</div>
form.on('select(data_type)', function(data){
console.log(data.value);
let data_type = data.value;
d_type = $(data.elem).find("option:selected").attr("d_type");
$("#company_id").removeAttr("disabled");
//删除所有的option
$("#company_id").find('option[datatypeid]').remove();
//查找出需要显示的option并复制
var options = companyselect.find("option[datatypeid="+data_type+"]").clone();
//将需要显示的option添加到select中
$("#company_id").append(options);
//因为option.remove()不会刷新控件,需要将新的option切换上去
//这里排除了options.size() == 0的情况
$("#company_id").find('option').eq(0).attr("selected",true);
form.render('select'); //刷新select选择框渲染
})