文本框自动补齐

一般下拉框不能实现 ,搜索文本框实现查询,对于绑定的数据多的话,查看起来就有点费劲。怎么能够实现类似于Google的所有引擎呢?往下看

<style type="text/css">
.search
{
left: 0;

position: relative;
}
.sb_input
{

background: url(Jquery/images/down.png) no-repeat center;
cursor:
pointer;
}
.autoDiv
{
display: none;

position: absolute;
width: 150px;
height: 150px;

border: 1px solid #00f;
background-color: White;

overflow: auto;
}
</style>
<script
src="../Jquery/jquery-1.8.2.min.js"
type="text/javascript"></script>
<script
type="text/javascript">
//测试用的数据
//var list = ‘<%=
BindDDL()%>‘;
//test_list = list.split(‘|‘);
var test_list =
["小张", "小苏", "小杨", "老张", "老苏", "老杨", "hello", "HI", "heel"];
var
old_value = "";
var newIndex = 1; //高亮
var oldIndex = 1;
//用于取消高亮显示
var counts = 0; // test_list.length; //列表个数

//按上下键设置样式
function setStyleForChange() {
newIndex =
newIndex > counts ? 1 : newIndex;
newIndex = newIndex < 1 ?
counts : newIndex;
$("div #" + newIndex).css("background-color",
"#ebebeb");
$("div #" + oldIndex).css("background-color",
"white");
}
//给文本框设置值
function setValue(newIndex, emailInput)
{
var addr = $("div #" + newIndex).text(); //.replace(/^/s/s*/,
‘‘).replace(//s/s*$/, ‘‘);
emailInput.val("");

emailInput.val(addr);
}
//鼠标移入设置样式
function setStyle(obj)
{

oldIndex = newIndex;
newIndex = $(obj).attr("id");

$(obj).css("background-color", "#ebebeb");
$("div #" +
oldIndex).css("background-color", "white");
setValue(newIndex,
$("#search_text"));
}
//鼠标移出取消样式
function cancelStyle(obj)
{
$(obj).css("background-color", "white");
}
//自动显示

function autoShow() {
var obj =
document.getElementById("search_text");
var mailAddressList =
document.getElementById("auto_div");
var x = 0, y = 0, o = obj; h =
obj.offsetHeight;
while (o != null) {
x +=
o.offsetLeft;
y += o.offsetTop;
o =
o.offsetParent;
}
mailAddressList.style.left = x +
‘px‘;
mailAddressList.style.top = y + h + ‘px‘;

mailAddressList.style.display = "inline";
}
//自动隐藏
function
autoHide() {
var mailAddressList =
document.getElementById("auto_div");
mailAddressList.style.display =
"none";
}
//自动完成
function AutoComplete(auto, search, mylist,
select) {
if ($("#" + search).val() != old_value || old_value == "")
{
var autoNode = $("#" + auto); //div
var Input =
$("#" + search); //文本框
autoNode.addClass("autoDiv");

//过滤临时数组
var carlist = new Array();
var n = 0;

old_value = Input.val();

for (i in mylist) {
//判断是不是文本框有数据后点击按钮
if
(select == "button") {
carlist[n++] = mylist[i];

}
else {
if
(mylist[i].toUpperCase().indexOf(old_value.toUpperCase()) >= 0) {

carlist[n++] = mylist[i];
}

}
}
if (carlist.length == 0) {

autoHide();
return;
}

autoNode.empty(); //清空上次的记录

counts = carlist.length;
for (var i = 0; i <
carlist.length; i++) {

var wordNode = carlist[i].split(‘,‘)[0];
//弹出框里的每一条内容
var idNode = carlist[i].split(‘,‘)[1];
//var
newDivNode = $("<div>").attr("id", i + 1); 设置每个节点的id值

var newDivNode = $("<div>").attr("id", idNode);

newDivNode.attr("onmouseover", "setStyle(this)");

newDivNode.attr("onmouseout", "cancelStyle(this)");

newDivNode.attr("style", "font:14px/25px arial;height:25px;padding:0 8px;");

newDivNode.html(wordNode).appendTo(autoNode); //追加到弹出框

//鼠标点击文字上屏
newDivNode.click(function () {

setValue(newIndex, Input);
newIndex = 1;

autoHide();
//取出高亮节点的文本内容
//var comText =
autoNode.hide().children("div").eq(newIndex - 1).text();

//文本框中的内容变成高亮节点的内容
//$("#" + search).val(comText);
})

//如果返回值有内容就显示出来
if (carlist.length > 0) {

autoShow();
} else { //服务器端无内容返回
那么隐藏弹出框
autoHide();
//弹出框隐藏的同时,高亮节点索引值也变成-1

newIndex = 1;
}
}

}

//点击页面隐藏自动补全提示框
document.onclick = function (e) {

var e = e ? e : window.event;
var tar = e.srcElement ||
e.target;
if (tar.id != search) {
if ($("#" +
auto).is(":visible")) {
if (select == "text") {

$("#" + auto).css("display", "none")

}
else {
$("#" +
auto).css("display", "inline")
}
}

}
}
}
document.onkeydown = function (event)
{
var e = event || window.event ||
arguments.callee.caller.arguments[0];
var emailInput =
$("#search_text");
var autoNode = $("#auto_div");
switch
(e.keyCode) {
case 40:
autoNode.focus();

oldIndex = newIndex;
newIndex++;

setStyleForChange();
setValue(newIndex, emailInput);

break;
case 38:

autoNode.focus();
oldIndex = newIndex;

newIndex--;
setStyleForChange();
setValue(newIndex,
emailInput);
break;
case 13:

autoNode.focus();
setValue(newIndex, emailInput);

autoHide();
GetName = newIndex;

break;
}
};
$(function () {

//触发文本框
$("#search_text").keyup(function () {

$("#search_text").focus();
AutoComplete("auto_div",
"search_text", test_list, "text");
});

//触发按钮
$(".sb_input").bind(‘click‘, function () {
old_value ==
"";
AutoComplete("auto_div", "search_text", test_list,
"button");
});
});
</script>
<table border="0"
cellpadding="0" cellspacing="0">
<tr>
<td
align="left" valign="top" style="border-top: 1px solid #54A5D5; border-left:
solid 1px #54A5D5;
border-bottom: solid 1px #54A5D5;
border-right: solid 1px #54A5D5;">
<table border="0"
cellpadding="0" cellspacing="0" style="font-size: 12px; width: 560px;

background-color: #EBF6FE;">
<tr style="height:
25px;">
<td style="width: 250px; text-align: left;
vertical-align: middle;">
<input type="text"
id="search_text" /><input class="sb_input" type="button" />

<div id="auto_div">

</div>
</td>

</tr>
</table>
</td>

</tr>
</table>

ok,写的都是静态数据,如果想用自己数据,那就要后台绑定,自己去掉了

时间: 2024-10-12 19:37:32

文本框自动补齐的相关文章

基于jQuery-autocomplete文本框自动联想补全特效

基于jQuery文本框自动联想补全特效.这是一款简单使用的jQuery自动完成插件,可定义索引关键词,可设置输入框的宽高,支持搜索回调函数.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="demo"> <div class="wrapper"> <h3>试试输入"爱编程"</h3> <div id="search-form">&l

Eclipse -- 自动补齐设置和其他用法

1:自动补齐设置:最简单的修改方式是:Windows——>Preferences——>Java-->Editor-->Content Asist,在Auto activation triggers for Java后面的文本框里只有一个“.”.现在你将其改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可.然后你再试试,会发现,现在的补全功能跟VS差不多了.你还可以在Advanced和Favorite里进行高级的设置

Elasticsearch in java 范例:自动补齐功能(completion suggester)

ES(elasticsearch)的suggester共有四类(term suggester, phrase suggester, completion suggester, context suggester), 其中completion suggester作为搜索框中的自动补齐功能,尤为常用. 本文将用java语言实现一个简单例子来叙述如何使用completion suggester. 例子的主要功能是为股票的名称和编号建立自动补齐功能. 实现一个完整的completion suggeste

关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器

这篇文章主要介绍了关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器,需要的朋友可以参考下.希望对大家有所帮助 Firefox 和 IE 的浏览器各自实现了input历史记录的功能,可以简化输入时的麻烦,但是,有时候弹出的下拉框会挡住页面显示内容,而且在某些情况下也不需要对input框进行记录,如号码查询的input框,用户不会对同一个号码进行多次查询,就没有必要让浏览器记录. MSIE自定义了input 的扩展属性 autocomplete,置为off即可 <input typ

谷歌,火狐浏览器不能禁用自动补齐的bug缺陷

IE浏览器里有autocomplete="off",可以禁止自动补全账号和密码,为了防止信息泄露,需要去除自动补齐. 自动补齐产生的场景是,form里面有密码框,因此只要将该密码框设置为text,点击的时候再改回password就解决了. $("#paypwd").click(function(){ $(this).attr("type","password"); });

小技巧--tab键自动补齐Git命令

Git是什么,你不清楚? 好吧,那么该篇内容对你也木有帮助,请绕道而行.. 我们在使用Git命令时,可以通过tab键,自动补齐Git,特别是在切换分支时特别有用. 如下,当我们想将当前分支切换到bugfix/DEV-31999-review-dialog-dose-not-show-scroll时,再此之前,要么傻兮兮的敲打分支名,要么复制粘贴: 但是,倘若我们可以通过tab键自动填充目的分支,岂不完美,如下: 下面就是关于设置mac下Tab键对git命令起作用的方法: Install Bash

webstorm配置Autoprefixer,自动补齐代码

1.win+R,运行npm install postcss-cli -g 2.安装autoprefixer npm install autoprefixer -g 3.安装 npm install postcss-cli -g 4.打开webstorm--settings--找到External Tools,新增Tools 配置参数 Program:填入你的PATH,postcss.cmd所在的文件夹 我的是C:\Users\还有谁\AppData\Roaming\npm\postcss.cmd

CocoaPods 导入第三方库头文件自动补齐

使用了一段时间CocoaPods来管理Objective-c的类库,方便了不少.但是有一个小问题,当我在xcode输入import关键字的时候,没有自动联想补齐代码的功能,需要手工敲全了文件名,难以适应. 在stackoverflow上找到了解决办法: Go to the Target > ”Build Settings” tab and find the ”User Header Search Paths” setting. Set this to ”$(BUILT_PRODUCTS_DIR)

CocoaPods导入第三方库头文件自动补齐

使用了一段时间CocoaPods来管理Objective-c的类库,方便了不少.但是有一个小问题,当我在xcode输入import关键字的时候,没有自动联想补齐代码的功能,需要手工敲全了文件名,难以适应. 在stackoverflow上找到了解决办法: Go to the Target > ”Build Settings” tab and find the ”User Header Search Paths” setting. Set this to ”$(BUILT_PRODUCTS_DIR)