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

这篇文章主要介绍了通过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.getElementById(obj); //动态生成下拉列表框 

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

}); 

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

时间: 2024-11-08 18:13:41

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

ajax实现输入框文字改变展示下拉列表的效果示例_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;

iOS开发中Swift3 监听UITextView文字改变的方法(三种方法)_IOS

在项目中使用文本输入框出UITextField之外还会经常使用 UITextView ,难免会有需求监听UITextView文本框内文本数量.下面介绍在swift3中两种常用方式 方式一: 全局通知 1.注册通知 在合适位置注册监听UITextView文本变化的全局通知 //UITextView 监听开始输入的两种方法 //方法一:通知 NotificationCenter.default.addObserver(self, selector: #selector(ComposeVC.textV

用CSS改变select下拉列表的边框

用CSS改变select下拉列表的边框样式代码. 以下是HTML网页特效代码,点击运行按钮可查看效果: [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

简单好用的ASP.NET分页类(支持AJAX、自定义文字)

  这篇文章主要介绍了简单好用的ASP.NET分页类(支持AJAX.自定义文字),本文直接给出实现代码和使用方法,需要的朋友可以参考下 在做网站没用 JS UI控件时 很实用 用法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var ps=new PageString();   /*可选参数*/   ps.SetIsEnglish = true;// 是否是英文 (默认:false) ps.SetIsShowText = true;//是

javascript自动改变文字大小和颜色的效果的小例子

这篇文章介绍了javascript自动改变文字大小和颜色的效果的小例子,有需要的朋友可以参考一下   复制代码 代码如下: <body  bgcolor="#000000">  <div id="text"  style="font-size:20px;">你好,这是一段改变文字大小和颜色的javascript代码</div>  <script type="text/javascript&quo

使用ajax实现无刷新改变页面内容和地址栏URL_AJAX相关

在访问现在很火的google plus时,细心的用户也许会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变.并且能够很好的支持浏览器的前进和后退.不禁让人想问,是什么有这么强大的功能呢? HTML5里引用了新的API,就是history.pushState和history.replaceState,就是通过这个接口做到无刷新改变页面URL的. 与传统的AJAX的区别 传统的ajax有如下的问题: 虽然ajax可以无刷新改变页面内容,但无法改变页面URL 其次为了更好的可访

JS实现输入框提示文字点击时消失效果_javascript技巧

本文实例讲述了JS实现输入框提示文字点击时消失效果.分享给大家供大家参考,具体如下: 在网页登陆框里的输入框里常常会看到提示你输入什么内容的字样颜色比较淡的,这个就是"文本框点击时文字消失,失去焦点时文字出现"这个效果:这个效果用个JS就可以完成,这个效果是做网站的人必备的JS代码:自己会写JS的写写也快,不会写的就需要代码收集以作备用,用到的时候就方便多了. 下面就是这个效果实现用到的JS代码: <script language="JavaScript" t

jQuery实用小技巧_输入框文字获取和失去焦点的简单实例_jquery

jQuery实用小技巧_输入框文字获取和失去焦点的简单实例 <input id="txt" class="text1" type="text" /> <script src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(function () { $("inp

使用ajax实现无刷新改变页面内容和地址栏URL

在访问现在很火的google plus时,细心的用户也许会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变.并且能够很好的支持浏览器的前进和后退.不禁让人想问,是什么有这么强大的功能呢? HTML5里引用了新的API,就是history.pushState和history.replaceState,就是通过这个接口做到无刷新改变页面URL的. 与传统的AJAX的区别 传统的ajax有如下的问题: 虽然ajax可以无刷新改变页面内容,但无法改变页面URL 其次为了更好的可访