使用jquery 实现 仿google 的智能提示输入框功能
来源:互联网 发布:淘宝收获了怎么退换货 编辑:程序博客网 时间:2024/05/16 10:59
在仿写OA 项目时,自己想写一个关于企业内部的信件发送模块。
其中,在发送信件时,需要User 在输入框中输入收件人的用户名,或者是收件部门的部门名称。即可以向单个人发送,也可向某个部门的所有人发送信件。这个模块需要提供User一个提示的功能,即用户每输入一个字符,则JSP页面会根据User输入的字符进行匹配并给出提示:
1. 用户按钮松开
2.获取到用户的输入字符串,并到数据库中查找到包含匹配的用户名及部门名称
3.将 “部门名称” “用户名 ,所属部门名称”分别装进一个tr 中,并将这些tr 装成一个table 来显示在输入框下面。其中单是部门名称不用背景色,而“用户名 , 所属部门名称”使用红色背景色
4.自动将table下的第一个tr 中 的TD 内容覆盖掉 输入框内容,同时将补充的内容进行高亮选中显示
5. User 可以通过鼠标滑动table 中的tr ,输入框的值会根据鼠标滑过的TR 取到 第一个TD 的值。在鼠标滑过TR 时,tr 的背景色改变以提示User
注: 在Firefox 中国版中能够实现除高亮选中补充的字符串外,都能够正常实现
在IE 能够正常实现
技术细节:
1. 输入框侦听键盘弹起的触发事件
$("#filterName").keyup(function(){。。。。。。。。。。}
2. 将table 中tr 的第一个 td 显示到 输入框中
if($("tr").eq(0).children().size()>0){
$("#filterName").attr("value",$mytr0.children().eq(0).text());
}
3.鼠标滑过tr 进行背景色改变:
function mymouseover(entity){
$this=entity;
$this.css("background","red");
$("#filterName").attr("value",$this.children().eq(0).text());
}
function mymouseout(entity){
$this=entity;
if($this.children().size()==2){
$this.css("background","yellow");
}
else
$this.css("background","white");
}
4. 高亮并选中补充的字符串
function setTextSelected(inputDom, startIndex, endIndex)
{
var FF = (navigator.userAgent.indexOf("Firefox")!=-1);
if(FF){
inputDom.setSelectionRange(startIndex, endIndex);
}
else{
inputDom.select();
var rng=document.selection.createRange();
rng.moveStart("character",startIndex)
rng.moveEnd("character",endIndex)
rng.select();
}
inputDom.focus();
}
所有代码:
$("#filterName").keyup(function(){
$inputValue=$(this).val();
if($inputValue.length>1){
$url2="messageAction!filterName.action?filterString="+$(this).val();
$.post(
$url2,
function(json){
var data=eval('('+json.theaterString+')');
$mytable=$("<table id='mytable' />")
$("#mytable").empty();
for(var i=0;i<data.length;i++){
// alert(data[i][1]);
$tr=$("<tr id='mytr"+i+"' style='position:relative;left=100px;top:100px;' onmouseover='mymouseover($(this))' onmouseout='mymouseout($(this))'></tr>");
$tr.attr("id",data[i][0]);
$td1=$("<td style='width:100px;height:20px' onclick='myclick($(this))' class='myrow'></td");
$td1.attr("value",data[i][1]).append(data[i][1]);
$tr.append($td1);
if(data[i][2]!=null){
$td2=$("<td style='width:100px;height:20px' onclick='myclick($(this))' class='myrow' mynumber='2'></td");
$td2.attr("value",data[i][2]).append(data[i][2]);
$tr.css("background","yellow");
$tr.append($td2);
}
$mytable.append($tr);
$("#mytable").append($mytable);
}
}
,"json"
);
$mytr0=$("tr").eq(0);
if($("tr").eq(0).children().size()>0){
$("#filterName").attr("value",$mytr0.children().eq(0).text());
}
// $selectText=$("#filterName").val().replace(/"+$inputValue+"/,"");
// alert($selectText);
// alert($("#filterName").val());
$startNum=$inputValue.length;
setTextSelected($("#filterName"),$startNum,100);
// functionselRange($("#filterName"),$startNum,100);
}
})
// })
})
function mymouseover(entity){
$this=entity;
$this.css("background","red");
$("#filterName").attr("value",$this.children().eq(0).text());
}
function mymouseout(entity){
$this=entity;
if($this.children().size()==2){
$this.css("background","yellow");
}
else
$this.css("background","white");
}
function setTextSelected(inputDom, startIndex, endIndex)
{
var FF = (navigator.userAgent.indexOf("Firefox")!=-1);
if(FF){
inputDom.setSelectionRange(startIndex, endIndex);
}
else{
inputDom.select();
var rng=document.selection.createRange();
rng.moveStart("character",startIndex)
rng.moveEnd("character",endIndex)
rng.select();
}
inputDom.focus();
}
注:本文没有对添加的table进行CSS样式设置
inputDom.setSelectionRange(startIndex, endIndex); 在firefox 中国版中提示出错:
inputDom.setSelectionRange is not a function
希望有解决办法的读者跟帖回复!谢谢
- 使用jquery 实现 仿google 的智能提示输入框功能
- 使用jquery 实现 仿google 的智能提示输入框功能 (改进版本)
- 仿google、百度搜索框输入信息智能提示的实现 兼容主流浏览器
- 仿google、百度搜索框输入信息智能提示的实现 兼容主流浏览器
- 用 jQuery + Ajax 实现 Google 的输入提示功能
- 实现输入内容提示的功能(仿google_百度输入框提示)jquery.ui.autocomplete.js插件
- 实现输入内容提示的功能(仿google_百度输入框提示)jquery.ui.autocomplete.js插件 .
- 实现输入内容提示的功能(仿google_百度输入框提示)jquery.ui.autocomplete.js插件
- 仿Google的输入下拉提示框
- 【输入智能提示功能】PHP+jQuery实现自动补全功能
- 【输入智能提示功能】PHP+jQuery实现自动补全功能
- jQuery实例:输入框下拉提示,仿google suggest
- jquery插件+.net 仿google的自动提示功能效果
- 使用easyUI的combobox下拉框控件实现输入提示功能(google suggest)
- 用jQuery + Ajax实现Google输入提示功能
- 用jQuery + Ajax实现Google输入提示功能
- Qt 控件 实现 QComboBox输入自动提示功能(仿Google搜索提示)
- jquery实现input输入框输入值自动智能提示的实现
- 工厂方法模式
- FindBug介绍
- 树形目录在PB中的实现与应用
- Hibernate中的getCurrentSession和openSession
- PowerBuilder实用技巧八则
- 使用jquery 实现 仿google 的智能提示输入框功能
- Remove and to reinstall IIS and Exchange Server
- Oracle 闪回特性(FLASHBACK DATABASE)
- redmine安装介绍
- 大博门槛高,毕业难!
- SQL Helper
- ORA-3136
- C#版Seven Segment LED(Display)
- 判断是否是Guest用户