select下拉框,选择其中一个,然后进行查询,完成之后,页面上的select框不回显当前查询时选中的值...

JSP下拉框回显方法
本文介绍了一种在JSP页面实现下拉框回显的方法,包括使用隐藏input元素存储值、JavaScript处理值的变化并传给后端,以及在页面加载时通过Ajax请求动态填充下拉选项。

1.首先在jsp页面select语句下面增加一个隐藏的input

 <select id="demo" name="demo" onchange="entryChange();">
	<option value="">--请选择--</option>
        <option value="">1</option>
        <option value="">2</option>
        <option value="">3</option>
 </select>

<input id="entryId" name="entryId" type="hidden" value="此处写你从后台接收到的值">

2.然后对input框中的值进行赋值,传给后台代码

function entryChange(){
   var entryId= document.getElementById("demo").value;
   $('#entryId').val(entryId);
}

3.赋值之后在后台定义,然后给他set/get方法,以便在jsp代码中进行接收

private String entryId;

public String getEntryId() {
	return entryId;
}

public void setEntryId(String entryId) {
	this.entryId = entryId;
}
	

4.从后台会通过xml还是别的方式跳转到jsp页面,在页面初始化方法中对传进来的值进行处理

var entryId = $("#entryId").val();

//这里根据你自己的需求来进行处理,因为我这里的数据是用ajax获取到的值拼接而成的
$.ajax({  
    contentType:"application/x-www-form-urlencoded;charset=UTF-8",   
    type:"POST",  
    url:"xxxx/xxxxxxxx.action?deptId="+deptId + "&" + Math.random(),  
    dataType:"json",
    success:function(res){
        var ststistic = "<option value=''>"+ "--请选择--" +"</option>";
	    for(var i=0;i<res.length;i++){
	       res[i].statisticId;
	       res[i].statisticName;
	       if(entryId == res[i].statisticId){
	           ststistic=ststistic+"<option selected='selected'   value='"+res[i].statisticId+"'>"+res[i].statisticName+"</option>";
	       }else{
	           ststistic=ststistic+"<option value='"+res[i].statisticId+"'>"+res[i].statisticName+"</option>";
	       }
             }
       $("#informationTypeIdEntry").html(ststistic);
   }
}); 

对循环出来的值进行判断,如果从后台传进来的entryId与循环出来的某个值相同,则在<option>中拼接上 selected='selected'属性。

 

5.还有一种情况就是下拉框的数据显示在页面上是ztree的形式,这种形式使用的不是select标签,而是input标签,那么我们这里就还可以使用另外一种回显方法(上面的都一样,只不过从后台返回值的时候做的回显操作不一样):

//ztree形式的input框
<input id="citySel" name="citySel" readonly type="text" onclick="showMenu(this); return false;"/>

var entryId= $("#entryId").val();

if (citySelName.length > 0) {
    $("#citySel").val(citySelName).trigger("change");
} else {
    $("#citySel").val(null).trigger("change");//id为空的话 select框就是空
}

也可以起到回显的效果

 

转载于:https://my.oschina.net/u/3748375/blog/3032004

在使用 `el-tree-select` 组件,如果设置了初始选择未能正确回显,通常是因为组件的 `v-model` 和 `props` 配置未与数据结构保持一致,或者选中的节点尚未加载到树中。以下是一些可能的原因及解决方案: ### 数据结构需与 props 保持一致 确保传入 `v-model` 的和组件配置的 `props` 相匹配。例如,若 `props.value` 是 `'code'`,那么 `v-model` 的应是对应节点的 `code` 或其数组形式。否则,组件无法正确识别并展示默认选中项[^2]。 ```typescript const listQuery = ref({ addvcd: ['100000'] // 初始必须与树节点的 code 字段一致 }) ``` ### 懒加载情况下节点未预先加载 如果使用了懒加载功能(通过 `lazy` 和 `load` 属性实现),则需要确保初始选中的节点及其父节点已加载完成。否则,即使设置了 `v-model`,由于节点尚未存在于树中,组件也无法显示正确的选项[^3]。 可以通过在 `onMounted` 生命周期钩子中主动调用一次 `load` 方法来预加载根节点,并保证后续层级的数据在展开被正确获取: ```typescript onMounted(async () => { await load({ level: 0, data: {} }, (data) => { treeData.value = data }) }) ``` ### 使用 node-key 并设置 setCurrentKey 为了高亮某个特定节点,可以利用 `setCurrentKey` 方法。此方法依赖于 `node-key` 属性,它必须与节点的唯一标识字段一致(如 `code`)。确保在数据加载完成后调用该方法以触发高亮效果[^1]。 ```typescript nextTick(() => { myTree.value.setCurrentKey(listQuery.value.addvcd[0]) }) ``` ### 缓存机制优化 为避免重复请求相同层级的数据,建议引入缓存机制记录已加载的节点。这样仅提升了性能,也确保了在设置初始能快速找到对应的节点并正确渲染。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值