您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 编程语言综合 >> 正文

ajax实现输入框文字改变展示下拉列表的效果示例

作者:佚名    责任编辑:admin    更新时间:2022-06-22

这篇文章主要介绍了通过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> 

<div class="Menu" id="List1"> 

<div 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>--%> 

</div> 

</div> 

 

</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> 

<div class="Menu" id="List2"> 

<div class="Menu2" id="ListLi2"> 

</div> 

</div> 

 

</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 executerDiv = document.getElementById(obj); //动态生成下拉列表框 

executerDiv.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); 

}); 

executerDiv.appendChild(ul); 

break; 

case "ListLi2": //根据车厂商名来刷选List2中的值 

var executerDiv = document.getEleme