实现两个select之间的两极联动


选择第一个select框中的银行时, 在第二个人select中显示所有的渠道。

  

思路:  在第一个select框上加一个改变值得事件, 当值改变是触发ajax请求, 或去选中银行下的所有渠道的数据, 然后通过循环加option加在第二个select上。


<tr>
					<td width="40%">
						<table>
							<tr>
								<td align="right">
									  <label class="control-label x80">渠道:</label>
								</td>	
								<td align="left">
									<select 
										name="bankNo" id="bankNoEntrust" data-toggle="selectpicker" >
											<#list bankList as bank>
												<option value="${bank.key}" <#if commonForm??&&commonForm.bankNo??&&commonForm.bankNo?string==bank.key>selected</#if>>${bank.value}</option>
											</#list>
									</select>
									<select name="channelNo" 
									id="channelNoEntrust"
									data-toggle="selectpicker" 
									data-val="${commonForm.channelNo!''}" >
										<#list channelList as channel>
											<option value="${channel.key}" <#if commonForm??&&commonForm.channelNo??&&commonForm.channelNo?string==channel.key>selected</#if>>${channel.value}</option>
										</#list>
									</select>
								</td>
							</tr>
						</table>
					</td>
				</tr>



//通过选中的银行发ajax请求, 获取渠道的数据


<script type="text/javascript">
$(function (){
	$("#bankNoEntrust").change(function(){
		var bankNo = $("#bankNoEntrust").val();
		$("#channelNoEntrust option").remove();
		$.ajax({
			type:"POST",
			url: "${base}/reconBillOrderEntrust/autoChannel.htm",
			data:{'bankNo':bankNo},
			success: function(data){
				console.log(data);
				if(data != null && data.length > 0){
					var html="";
					for(var i=0; i<data.length; i++){
						html+="<option value='"+data[i].key+"'>"+data[i].value+"</option>";
					}
				}
				$("#channelNoEntrust").html(html).selectpicker('refresh');
			}
		})
	});
});


//后台处理代码:

@RequestMapping("/autoChannel")
	@ResponseBody
	public List<Kav> autoChannel(HttpServletRequest request, HttpServletResponse response, @ModelAttribute ReconBillOrderProcessForm form){
		List<Kav> l_kavs = initKav();
		//如果为空,直接返回
		if (form.getBankNo() == null){
			return l_kavs;
		}
		//最终返回根据银行返回的托收渠道
		List<ReconChannelDto> trustChannelDtoList = new ArrayList<ReconChannelDto>();
		ReconChannelForQuery queryChannel = new ReconChannelForQuery();
		queryChannel.setBankNo(form.getBankNo());
		//根据银行查询渠道集合
		List<ReconChannelDto> channelListByBankNo = reconChannelService.query(queryChannel);
		ReconBankTransTypeForQuery queryEntust = new ReconBankTransTypeForQuery();
		queryEntust.setSysTransType(TransType.Entrust_Accept.getKey().toString());
		//托收的所有的渠道
		List<ReconChannelDto> channelDtoOfAllList = new ArrayList<ReconChannelDto>();
		List<String> channelDtoOfAllChannelNoList = new ArrayList<String>();//托收所有的渠道编号集合
		List<ReconBankTransTypeDto> reconBankTransTypeDtoList = reconBankTransTypeService.query(queryEntust);
		for (ReconBankTransTypeDto dto : reconBankTransTypeDtoList){
			ReconChannelForQuery query = new ReconChannelForQuery();
			query.setChannelNo(dto.getChannelNo());
			List<ReconChannelDto> reconChannelDtoList = reconChannelService.query(query);
			if (CollectionUtils.isEmpty(reconChannelDtoList)){
				continue;
			}
			channelDtoOfAllList.add(reconChannelDtoList.get(0));
			channelDtoOfAllChannelNoList.add(dto.getChannelNo());
		}
		//最终返回根据银行返回的托收渠道
		for (ReconChannelDto dto : channelListByBankNo){
			if (channelDtoOfAllChannelNoList.contains(dto.getChannelNo())){
				trustChannelDtoList.add(dto);
			}
		}
		for (ReconChannelDto dto : trustChannelDtoList){
			Kav k = new Kav();
			k.setKey(dto.getChannelNo());
			k.setValue(dto.getChannelName());
			l_kavs.add(k);
		}
		return l_kavs;
	}





实现两个select联动,可以使用JavaScript来实现。具体步骤如下: 1. 给第一个select添加一个onchange事件,在该事件获取选的值。 2. 根据第一个select的值,动态生成第二个select的选项。 3. 将生成的选项添加到第二个select。 以下是示例代码: ```html <!-- 第一个select --> <select id="select1" onchange="changeSelect()"> <option value="1">选项1</option> <option value="2">选项2</option> <option value="3">选项3</option> </select> <!-- 第二个select --> <select id="select2"> </select> <script> function changeSelect() { // 获取第一个select的值 var select1Value = document.getElementById("select1").value; // 根据选的值生成第二个select的选项 var select2Options = ""; if (select1Value == "1") { select2Options += "<option value='1-1'>选项1-1</option>"; select2Options += "<option value='1-2'>选项1-2</option>"; } else if (select1Value == "2") { select2Options += "<option value='2-1'>选项2-1</option>"; select2Options += "<option value='2-2'>选项2-2</option>"; } else if (select1Value == "3") { select2Options += "<option value='3-1'>选项3-1</option>"; select2Options += "<option value='3-2'>选项3-2</option>"; } // 将生成的选项添加到第二个select document.getElementById("select2").innerHTML = select2Options; } </script> ``` 在上面的代码,我们给第一个select添加了一个onchange事件,并定义了一个changeSelect函数。当第一个select的选项发生改变时,changeSelect函数会被调用。 在changeSelect函数,我们首先获取了第一个select的值,然后根据选的值生成了第二个select的选项。最后,我们将生成的选项添加到第二个select。这样,就实现两个select联动
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值