问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用Ajax实现,下拉框的效果?

发布网友 发布时间:2022-05-14 18:27

我来回答

3个回答

懂视网 时间:2022-05-14 22:48

这篇文章主要介绍了通过ajax实现输入框文字改变展示下拉列表的效果,需要的朋友可以参考下

1.样式

<style type="text/css"> 
<!-- 
body{background:#fff} 
.Menu { 
position:relative; 
width:180px; 
height:120px; 
z-index:1; 
background: #EEE; 
border:1px solid #666; 
margin-top:-100px; 
display:none; 
} 
.Menu2 { 
position: absolute; 
left:0; 
top:0; 
width:100%; 
height:120px; 
overflow:hidden; 
z-index:1; 
OVERFLOW-y:auto; 
} 
.Menu2 ul{margin:0;padding:0} 
.Menu2 ul li{width:100%;height:25px;line-height:20px;text-indent:15px; 
border-bottom:1px dashed #999;color:#333;cursor:pointer; 
change:expression( 
this.onmouseover=function(){ 
this.style.background=""; 
}, 
this.onmouseout=function(){ 
this.style.background=""; 
} 
) 
} 
input{width:120px} 
#List1,#List2{left:0px;top:103px;} 
--> 
</style>

2. html脚本

........省略常规脚本 
<tr> 
<th>汽车品牌名:</th> 
<td> 
<input type="text" id="generalBrandName" name="generalBrandName" value="${*.generalBrandName}" style="width:180px" data-validation-engine="validate[required]" <c:if test="${!empty carType.brandIdGeneral}"> disabled="disabled" </c:if> onfocus="showAndHide('List1','show');" onblur="showAndHide('List1','hide');"/> 
<input type="hidden" id="brandIdGeneral" name="brandIdGeneral" value="${*.brandIdGeneral}" style="width:180px" /> 
<span class="required">必填*</span> 
<p class="Menu" id="List1"> 
<p class="Menu2" id="ListLi1"> 
<%-- <ul>--%> 
<%-- <li onmousedown="getValue('generalBrandName','宝马','brandIdGeneral','idx');showAndHide('List1','hide');">宝马</li>--%> 
<%-- <li onmousedown="getValue('generalBrandName','奥迪','brandIdGeneral','idx');showAndHide('List1','hide');">奥迪</li>--%> 
<%-- </ul>--%> 
</p> 
</p> 
</td> 
</tr> 
........省略常规脚本 
<tr> 
<th>汽车厂商名:</th> 
<td> 
<input type="text" id="brandName" name="brandName" value="${*.brandName}" style="width:180px" data-validation-engine="validate[required]" <c:if test="${!empty carType.brandId}"> disabled="disabled" </c:if> onfocus="showAndHide('List2','show');" onblur="showAndHide('List2','hide');" /> 
<input type="hidden" id="brandId" name="brandId" value="${*.brandId}" style="width:180px" /> 
<span class="required">必填*</span> 
<p class="Menu" id="List2"> 
<p class="Menu2" id="ListLi2"> 
</p> 
</p> 
</td> 
</tr>

3.通过JS来实现ajax异步请求 根据输入的内容过滤

//页面加载的时候 
jQuery(function($) { 
if (navigator.userAgent.indexOf("MSIE") > 0) { 
document.getElementById('generalBrandName').attachEvent("onPropertyChange", appendList); 
document.getElementById('brandName').attachEvent("onPropertyChange", appendList); 
} 
else if (navigator.userAgent.indexOf("Firefox") > 0) { 
document.getElementById('generalBrandName').addEventListener("input", appendList, false); 
document.getElementById('brandName').addEventListener("input", appendList, false); 
} 
}); 
//////// 预加载 
jQuery(function($) { 
txtValue = $("#generalBrandName").val(); 
//////// 给txtbox绑定键盘事件 
$("#generalBrandName").bind("keyup", function() { 
var currentValue = $(this).val(); 
if (currentValue != txtValue) { 
appendList('List1',currentValue); 
txtValue = currentValue; 
} 
}); 
txtValue = $("#brandName").val(); 
//////// 给txtbox绑定键盘事件 
$("#brandName").bind("keyup", function() { 
var currentValue = $(this).val(); 
if (currentValue != txtValue) { 
appendList('List2',currentValue); 
txtValue = currentValue; 
} 
}); 
}); 
//实现动态显示下拉列表内容的function 
//根据输入框中的值来筛选obj中的值 
function appendList(obj,value){ 
value = encodeURIComponent(value); value = encodeURIComponent(value); //两次使用encodeURI() 
switch(obj){ 
case "List1": //根据车品牌名来刷选List1中的值 
$.getJSON( 
ctx + "/car/carmodel/**.do", 
{keyWord : value, id : new Date().getTime()}, <!-- 产生一个时间戳,不让IE以为是相同的URL而使用cache --> 
function (json) { 
createLis('ListLi1',json); 
} 
); 
break; 
case "List2": //根据车厂商名来刷选List2中的值 
$.getJSON( 
ctx + "/car/carmodel/**.do", 
{keyWord : value, id : new Date().getTime()}, <!-- 产生一个时间戳,不让IE以为是相同的URL而使用cache --> 
function (json) { 
createLis('ListLi2',json); 
} 
); 
break; 
} 
} 
function createLis(obj,json){ 
switch(obj){ 
case "ListLi1": //根据车品牌名来刷选List1中的值 
var executerp = document.getElementById(obj); //动态生成下拉列表框 
executerp.innerHTML=""; 
var ul=document.createElement("ul"); 
$.each(json, function (i, item) { 
var li=document.createElement("li"); 
var str = "getValue('generalBrandName','"+item.brandNameGeneral+"','brandIdGeneral','"+item.brandIdGeneral+"');showAndHide('List1','hide')"; 
li.setAttribute("onmousedown",str); 
li.appendChild(document.createTextNode(item.brandNameGeneral)); 
ul.appendChild(li); 
}); 
executerp.appendChild(ul); 
break; 
case "ListLi2": //根据车厂商名来刷选List2中的值 
var executerp = document.getElementById(obj); //动态生成下拉列表框 
executerp.innerHTML=""; 
var ul=document.createElement("ul"); 
$.each(json, function (i, item) { 
var li=document.createElement("li"); 
var str = "getValue('brandName','"+item.brandName+"','brandId','"+item.brandId+"');showAndHide('List1','hide')"; 
li.setAttribute("onmousedown",str); 
li.appendChild(document.createTextNode(item.brandName)); 
ul.appendChild(li); 
}); 
executerp.appendChild(ul); 
break; 
} 
} 
//显示或者隐藏层 
function showAndHide(obj,types){ 
var Layer=window.document.getElementById(obj); 
switch(types){ 
case "show": 
Layer.style.display="block"; 
appendList(obj,''); 
break; 
case "hide": 
Layer.style.display="none"; 
break; 
} 
} 
//获取选中节点的内容 
function getValue(obj1,str,obj2,idx){ 
var input=window.document.getElementById(obj1); 
input.value=str; 
var input=window.document.getElementById(obj2); 
input.value=idx; 
}

4.展示效果

热心网友 时间:2022-05-14 19:56

给你思路,当点击下拉框的时候调用ajax,进入后台访问数据库,再把数据回调到页面,显示打印在下拉框内

热心网友 时间:2022-05-14 21:14

你的那个弹出框定位有问题,CSS调整一下就行了
希望能解决您的问题。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
容易发财的房地产中介公司名字 我想对自己的房子进行房产评估,去哪里办理,需要... 改字体的时候不小心改错了,全变成格仔了怎么办 手机文件不小心改错名字了怎么办 女生每天早晚各跑步一个小时,配合饮食,一个月瘦多少? 每天早晚各慢跑一小时.一个月能瘦多少斤 爱剪辑怎么去水印 给视频去水印方法 游戏本关机时可以晃吗? 笔记本玩游戏CPU温度高,会花屏 打剑网三一小时声音大,发热,还能继续吗? 幻灯片的对象是指什么? 小米wifi放大器效果如何? 小米WiFi放大器真的有效果吗? 鸡粪用塑料袋封装能发酵吗 发酵腐熟的鸡粪有机肥为什么有臭味 大型鸡粪发酵罐 胡须种植的价格是多少 macbook可以装windows软件吗???macbook好用吗? macbook air可以用win8.1的系统吗 苹果电脑能装WINDOWS系统吗?在苹果系统下的现在用的WINDOWS软件能用吗? 激光去胡须要多少钱 刮胡子用什么牌子的?价格呢? 美发店里刮胡子一般要多少价格? 女孩子剃胡子200啥意思 mac能用什么windows的软件 装完系统都只有一个c盘 重装系统后只有一个C盘了怎么办啊 重装系统后怎么就只有一个C盘了而且还变得很小 儿童电话手表(智天使2)怎么找出菜单 酷比亚儿童定位手表‘智天使2’多少钱? MODBUS通讯传输模式有哪些? modubus有哪三种形式 上海地铁2号线,早晨最早几点开始到川沙站?去浦东机场早上头班车几点 请教关于MODBUS两种通讯模式的问题 Modbus RTU模式时,没有起始位 那怎么判通信开始呢? 本人菜鸟 买个够40人吃的蛋糕多少钱?不要上档气的 简单就好 买个够我开了,拔的看近义词怎么写 买个够40人吃的蛋糕要多少钱? 购够买檬,买够累是什么意思? 订一个够四、五个人吃的蛋糕一般要多少钱? 为什么和朋友逛街,朋友想买的买不到,我却买了一堆? 宿迁哪些琴行卖钢琴,目前已经看了雅马哈、卡瓦依、珠江、海伦。孩子初学钢琴。想买个够她一直用的。 韶关哪里有拉杆箱买? 孩子总爱去超市买零食,怎么办 结婚买多少分的钻戒? 买电脑的原则是什么? 假面骑士ooo玩具从那买 手机必须买千元的吗? 家里可以放养鹌鹑吗 我想买基金__