layui select option动态显示隐藏问题

在这里插入图片描述
通过报表类型,动态加载公司名称,不同的报表类型,同一个公司,所带的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选择框渲染
		})

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态添加 option 可以使用 jQuery 或者原生 JavaScript 实现,以下是一个使用 jQuery 的示例: ```javascript // 添加一个 option $('#selectId').append('<option value="value">text</option>'); // 删除最后一个 option $('#selectId option:last').remove(); ``` 其中,`#selectId` 是 select 元素的 ID,`value` 和 `text` 分别是 option 的值和显示文本。 如果你想删除指定的 option,则可以使用以下代码: ```javascript // 删除指定 value 的 option $('#selectId option[value="value"]').remove(); ``` 同样地,如果想删除指定的索引位置的 option,可以使用以下代码: ```javascript // 删除指定索引位置的 option $('#selectId option:eq(index)').remove(); ``` 以上是使用 jQuery 实现动态添加和删除 option 的方法,如果你想使用原生 JavaScript 实现,可以使用以下代码: ```javascript // 添加一个 option var option = document.createElement('option'); option.value = 'value'; option.text = 'text'; document.getElementById('selectId').appendChild(option); // 删除最后一个 option var select = document.getElementById('selectId'); select.options[select.options.length - 1] = null; ``` 同样地,如果想删除指定的 option,可以使用以下代码: ```javascript // 删除指定 value 的 option var select = document.getElementById('selectId'); for (var i = 0; i < select.options.length; i++) { if (select.options[i].value === 'value') { select.remove(i); break; } } // 删除指定索引位置的 option var select = document.getElementById('selectId'); select.remove(index); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值