如何实现点击ajax返回的div组成的下拉框把值返回到文本框

1 篇文章 0 订阅
1 篇文章 0 订阅

最近在写ajax异步刷新取后台数据返回前台的功能时碰到一个问题,即如何实现点击拼接的div组成的“下拉框”,将内容放入搜索的文本框中的功能。如图1所示。
在这里插入图片描述

//原始代码
<div>
	<input type="text" value="1" name="kw" id="tid" style="width:300px;height:20px"><input type="button" value="新的征程">
			</div>
			<div id="did" style="border: 1px solid gray;width: 300px;position:relative;left:-34px;display:none"></div>
		</div> 
	</center>
</body>
<script type="text/javascript" >
$(function(){
	$("#tid").keyup(function(){
		//alert(11);
		$.post("${pageContext.request.contextPath}/kw","kw="+$("#tid").val(),function(obj){
		$("#did").html("");
		//一开始想的是动态拼接id或者name
			//var n=1;
		if(obj!=""){
		$(obj).each(function(){
		//动态拼接
			$("#did").append("<div onmouseover='over(this)' onmouseout='out(this)' onclick='click(this)'>"+this+"</div>");
			$("#did").show();
			//n++;
			
		})
		}else{
			$("#did").hide();
		}	
		},"json")
	})
})

</script>
<script type="text/javascript" >
function over(obj){
	$(obj).css("background-color","gainsboro");
	
}
function out(obj){
	$(obj).css("background-color","white");
}
function click(obj){
	$("#tid").val($(obj).html());
}

一开始的想法是遍历中动态拼接id或者name,即:
先遍历函数.each()外声明一个变量:var n=1;

//每次遍历
$("#did").append("<div onmouseover='over(this)' onmouseout='out(this)' id/name=' "+n+" '>"+this+"</div>");
n++;

然后根据属性选择器或id选择器添加事件。
后来发现不用这么麻烦,直接在拼接的div里添加一个onclick事件即可,但这时我犯了第二个错误。我把onclick事件的名字命名为click,但断点可以进去,却不会触发事件。思考后想到可能引用了jQuery,导致命名重复。重命名后,顺利实现点击div将值付给文本框功能。

<div>
				<input type="text" value="1" name="kw" id="tid" style="width:300px;height:20px"><input type="button" value="新的征程">
			</div>
			<div id="did" style="border: 1px solid gray;width: 300px;position:relative;left:-34px;display:none"></div>
		</div> 
	</center>
</body>
<script type="text/javascript" >
$(function(){
	$("#tid").keyup(function(){
		//alert(11);
		$.post("${pageContext.request.contextPath}/kw","kw="+$("#tid").val(),function(obj){
		$("#did").html("");
			//var n=1;
		if(obj!=""){
		$(obj).each(function(){
			//alert(this);
			//添加onclick方法并重命名
			$("#did").append("<div onmouseover='over(this)' onmouseout='out(this)' onclick='cli(this)'>"+this+"</div>");
			$("#did").show();
			//n++;
			
		})
		}else{
			$("#did").hide();
		}	
		},"json")
	})
})

</script>
<script type="text/javascript" >
function over(obj){
	$(obj).css("background-color","gainsboro");
	
}
function out(obj){
	$(obj).css("background-color","white");
}
function cli(obj){
//将遍历的obj赋值给文本框的value
	$("#tid").val($(obj).html());
}

实现效果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值