`

类似GOOGLE实现下拉框列表提示

    博客分类:
  • js
阅读更多

FireFox与IE的小小注意:

1、firefox记得宽度和高度加‘p ’

2、firefox事件用obj.addEventListener("input",test1,false);

3、事件源与event对象。

event.srcElement和event.target

event和window.event

类似GOOGLE实现下拉框列表提示代码:

<!-- style显示控制医院列表 -->
<style>
span
{
text-align:left;
font-size:12px;
width: 200px;
}
span.spanTextDropdown{
position: absolute;
top: 0px;
left: 0px;
width: 200px;
z-index: 101;
background-color: #ffffff;
border: 1px solid #000000;
padding-left: 2px;
overflow: visible;
display: none;
}

span.spanMatchText{
text-decoration: underline;
font-weight: bold;
}
span.spanNormalElement{ background: #ffffff; }
span.spanHighElement{
background: #FF99CC;
color: #0000FF;
cursor: pointer;
}
</style>
<!-- style显示控制结束 -->

//DOWNLIST.JS

var arrOptions = new Array();
var theTextBox;
var isSure=0;
//表当前选中的某项
var currentValueSelected = -1;
//以上设置一些全局变量
window.onload = function()
{

//在页面创建span标签
var elemSpan = document.createElement("span");
elemSpan.id = "spanOutput";
elemSpan.className = "spanTextDropdown";
document.body.appendChild(elemSpan);
//当按键抬起调用此函数
if(isIE())
{
$("hospital").onkeyup=test1;
$("hospital").onpropertychange=test1;
}
else
{
$("hospital").addEventListener("input",test1,false);
$("hospital").addEventListener("keyup",test1,false);
}
}

function show(){alert("evet");}

function isIE()
{
if(navigator.appName.indexOf("Explorer")>-1) return true;
else return false;
}


function $(id){ return document.getElementById(id);}

function clearOptions(ctl)
{
for(var i=ctl.options.length-1;i>0;i--){ctl.remove(i);}
}


function getKesi(hos)
{
linkage.getSS(hos,function(returnvalue)
{
for(var i=0; i<returnvalue[0].length; i++)
{
document.getElementById("office").options.add(new Option(returnvalue[1][i],returnvalue[0][i]));
}
});

}

function test1(evt)
{
var intKey = -1;
var temp="";
var evt=evt?evt:(window.event?window.event:null);
if(evt)
{
intKey = evt.keyCode;
//获得事件源
theTextBox = evt.srcElement?evt.srcElement:evt.target;

}
clearOptions(document.getElementById("office"))
if(isSure==1){isSure=-1;return false;}
else
{
if(isSure<0) isSure=0;
else
{
if(theTextBox.value.length == 0)
{
HideTheBox();
return false;
}
if(intKey == 13){
//按回车键
SetText();
theTextBox.blur();
return false;
}else if(intKey == 38){
//按向上键
MoveHighlight(-1);
return false;
}else if(intKey == 40){
//按向下键
MoveHighlight(1);
return false;
}
var vau=$("hospital").value;
if(vau=="输入医院进行选择" || vau==null) vau="";
//dwr技术,后台连接数据库
linkage.getHosByHNameAndArea(
vau,
$("aname").value,
function(datas)
{
arrOptions=datas;
//建立下拉框
Bulid(arrOptions);
}
);
}
}
}

function Bulid(arrOptions)
{
var inner="";
//设置下拉框出现的位置
SetElementPosition();
var i=0;
for(var i=0;i<arrOptions.length;i++)
{
inner+="<span id=arr_"+i+" class='spanNormalElement' onmouseover='SetHighColor(this)' onclick='SetText()'><font color='#0000FF'>"+arrOptions[i].HName+"</font></span><br>";
}
document.getElementById("spanOutput").innerHTML = inner;
if(inner!="")
{
//设置第一个顶为默认选中
document.getElementById("arr_0").className ="spanHighElement";
currentValueSelected=0;
}
else
{
HideTheBox();
currentValueSelected=-1;
}
}


function SetElementPosition()
{
//设置下拉框出现的位置
var selectedPosX = 0;
var selectedPosY = 0;
var theElement = $("hospital");
var theTextBoxInt = $("hospital");

if (!theElement) return;
var theElemHeight = theElement.offsetHeight;
var theElemWidth = theElement.offsetWidth;

while(theElement != null)
{
selectedPosX += theElement.offsetLeft;
selectedPosY += theElement.offsetTop;
theElement = theElement.offsetParent;
}
xPosElement = document.getElementById("spanOutput");
if(isIE())
{
xPosElement.style.left = selectedPosX;
xPosElement.style.width = theElemWidth;
xPosElement.style.top = selectedPosY + theElemHeight

xPosElement.style.display = "block";
}
else
{
xPosElement.style.left = selectedPosX+'px';
xPosElement.style.width = theElemWidth+'px';
xPosElement.style.top = selectedPosY + theElemHeight+'px';

xPosElement.style.display = "block";
}
}

function MoveHighlight(xDir)
{
//设置上下移动键
var currnum=currentValueSelected+xDir;
if(currnum >= 0 && currnum<arrOptions.length )
{
document.getElementById("arr_"+currentValueSelected+"").className ="spanNormalElement";
document.getElementById("arr_"+currnum+"").className ="spanHighElement";
currentValueSelected=currnum;
}
else if(currnum==arrOptions.length)
{
document.getElementById("arr_"+currentValueSelected+"").className ="spanNormalElement";
currentValueSelected=0;
document.getElementById("arr_"+currentValueSelected+"").className ="spanHighElement";
}
else if(currnum==-1)
{
document.getElementById("arr_"+currentValueSelected+"").className ="spanNormalElement";
currentValueSelected=arrOptions.length-1;
document.getElementById("arr_"+currentValueSelected+"").className ="spanHighElement";
}
}
function HideTheBox()
{
//隐藏下拉框
document.getElementById("spanOutput").style.display = "none";

currentValueSelected = -1;
}
function SetText()
{
//选中下拉框中的某个值
isSure=1;
theTextBox = $("hospital");
theTextBox.value = arrOptions[currentValueSelected].HName;
document.getElementById("spanOutput").style.display = "none";
$("hospital").value=theTextBox.value;
$("hos").value=theTextBox.value;
getKesi(theTextBox.value);
currentValueSelected = -1;
}

function SetHighColor(theTextBox)
{
//当鼠标划过变为选中状态
if(theTextBox)
{
currentValueSelected = theTextBox.id.slice(theTextBox.id.indexOf("_")+1,theTextBox.id.length);
}
for(var i = 0; i < arrOptions.length; i++)
{
document.getElementById('arr_' + i).className ='spanNormalElement';
}
document.getElementById('arr_'+currentValueSelected).className = 'spanHighElement';
}

function FocuText()
{
$("hospital").select();
var vau=$("hospital").value;
if(vau=="输入医院进行选择" || vau==null) vau="";

//dwr技术,后台连接数据库
linkage.getHosByHNameAndArea(
vau,
$("aname").value,
function(datas){
arrOptions=datas;
//建立下拉框
Bulid(arrOptions);
}
);
}

function BlurText()
{
if($("hospital").value=="") $("hospital").value="输入医院进行选择";
}

<script type='text/javascript' src='dwr/interface/linkage.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='js/downlist.js'></script>

<input type="text" name="hospital" id="hospital" value="输入医院进行选择" onFocus="FocuText();" onBlur="BlurText();" size="30" maxlength="100"/>

分享到:
评论

相关推荐

    类似google的下拉框

    总的来说,实现类似Google的下拉框控件需要结合JavaScript、Ajax、XML(或JSON)和后端编程(如C#)等技术,通过前端与后端的紧密协作,实现高效的智能搜索提示功能。这样的功能不仅提升了用户体验,也是现代Web应用...

    仿google,百度的下拉框提示(无刷新)

    标题中的"仿google,百度的下拉框提示(无刷新)"是指实现一个类似于谷歌和百度搜索引擎的自动完成功能,即在用户输入...通过这些技术的结合,可以实现一个高效的无刷新下拉框提示功能,提供类似谷歌和百度的搜索体验。

    ajax实现google搜索提示

    本示例将聚焦于如何使用Ajax来实现类似Google搜索时的实时搜索提示功能。 首先,我们要理解Google搜索提示的基本原理。它通过在用户输入关键字时,向服务器发送请求,服务器根据这些关键字返回相关的搜索建议。这些...

    QCombox自动提示,仿谷歌搜索功能

    在实际应用中,我们经常需要实现类似谷歌搜索那样的输入自动提示功能,即用户在输入框中输入文字时,系统能够实时给出匹配的建议。在本项目“QCombox自动提示,仿谷歌搜索功能”中,我们将看到如何结合`QComboBox`和...

    bootstrap select 下拉框通过拼音搜索汉字

    在“bootstrap select 下拉框通过拼音搜索汉字”这个实例中,我们关注的重点是如何利用该插件实现通过输入拼音来搜索并筛选汉字的功能,这对于中文环境下的用户体验提升有着显著的作用。 首先,我们要了解Bootstrap...

    可输入下拉框的源码以及demo (2008)

    "标签"中提到了"百度"和"google",这可能意味着该源码或demo可能受到了这两个搜索引擎的启发,或者实现了类似的功能。百度和Google的搜索框都包含了可输入下拉框,能够根据用户的输入提供即时的搜索建议,大大提升了...

    几行代码的二级联动和类似goolge的输入下拉提示

    对于“类似Google的输入下拉提示”,可以在用户输入时,利用DWR实时向服务器发送请求,根据输入的关键词匹配数据库中的数据,然后将匹配结果以列表的形式显示在输入框下方。 在实现过程中,需要注意以下几点: 1. ...

    C++模仿GOOGLE等搜索引擎的智能提示功能(源码)

    这个项目名为"C++模仿GOOGLE等搜索引擎的智能提示功能",其目的是通过源代码实现一个类似于谷歌搜索框的自动提示系统。 首先,我们要理解“自动提示”或“自动完成”(Autocomplete)的概念。在编程领域,自动提示...

    文本输入像google的自动提示

    标题中的“文本输入像google的自动提示”指的是在网页中实现一种类似谷歌搜索框的自动补全功能。这种功能在用户输入文本时,能够实时显示与输入内容匹配的建议列表,提高了用户输入的效率和准确性。它基于 AJAX...

    输入智能提示tokeninput

    这种技术通常应用于搜索框、标签输入、多选下拉框等场景,允许用户通过键入部分内容来快速筛选并选择所需选项,类似于Google搜索的自动补全功能。本文将详细探讨TokenInput的工作原理、特点、应用场景以及实现方法。...

    完全仿谷歌搜索 显示信息条数

    在IT行业中,构建一个搜索引擎是复杂且技术性强的任务,尤其是要实现类似谷歌这样的高效、用户友好的搜索体验。本文将详细解析"完全仿谷歌搜索 显示信息条数"这一主题,涵盖智能提示、自动回传、谷歌搜索效果的实现...

    j2ee实现的仿Goole、百度搜索下拉提示

    通过对这些文件的分析和整合,我们可以构建一个完整的搜索下拉提示系统,让用户在输入搜索词时获得与Google和百度类似的便捷体验。 总结来说,J2EE实现的仿Google、百度搜索下拉提示功能是一个涉及前端交互、后端...

    仿GoogleSuggest自动补全的功能

    为了实现类似的功能,我们需要关注以下几个关键点: 1. **前端设计**:前端部分需要监听用户输入,每当用户键入新的字符时,触发请求发送到服务器。同时,需要有一个合适的UI组件来显示建议列表,例如下拉框或浮层...

    vant的field组件(autocomplete)

    在Vant的组件体系中,`Field`组件主要用于表单输入,而`Autocomplete`则是用于实现自动完成功能的组件。在本案例中,我们将探讨如何将`Field`组件与自动完成功能相结合。 1. **Vant Field组件** Vant的`Field`组件...

    asp.net+sql仿google搜索功能

    在本文中,我们将深入探讨如何使用ASP.NET 2005和SQL数据库来实现一个类似于Google的搜索功能,包括搜索下拉框的自动提示。这个功能对于提高用户体验和提升网站互动性至关重要,尤其是在大型网站中,它能帮助用户...

    textbox百度下拉模糊查询

    "TextBox百度下拉模糊查询"和"TextBoxGoogle下拉模糊查询"是两种在前端开发中实现类似搜索引擎下拉提示功能的技术。这里我们将详细探讨这两者的核心概念、实现原理以及如何应用。 1. 模糊查询原理: 模糊查询主要...

    70个流行的ajax应用的演示和源码下载.docx

    24. Behaviour:实现淡入淡出列表、可排序列表、下拉框和抖动列表等交互效果。 25. chat.app:基于Ajax的聊天应用,展示了实时通信的可能性。 26. Chihuahua Word Puzzle:每日单词拼图游戏,利用Ajax更新游戏状态...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    9.jquery仿google首页图标动画菜单效果实现模拟鼠标动画菜单的代码 10.jquery仿卓越亚马逊网鼠标移到按钮弹出菜单的效果代码 11.jquery浮动变化的个性菜单插件floatmenu下载 12.jQuery黑色风格仿Flash版下滑...

    《ajax经典案例开发大全》光盘源代码

    这个案例展示了如何使用Ajax实现类似Google搜索框的实时提示功能。当用户在输入框中输入文字时,后台会根据输入的内容查询相关关键词,并通过Ajax异步请求返回匹配的结果。这些结果可以实时显示在下拉框中,供用户...

    《程序天下:JavaScript实例自学手册》光盘源码

    5.9 类似MSN的消息提示 5.10 只打印iframe的内容 第6章 下拉列表特效 6.1 下拉框实现多选 6.2 实现两个select的同步 6.3 被选中的列表项下次不能再选 6.4 不带滚动条的select 6.5 从一个下拉列表往另一个下拉列表...

Global site tag (gtag.js) - Google Analytics