`
yangshen998
  • 浏览: 1249710 次
文章分类
社区版块
存档分类
最新评论

使用jquery 实现 仿google 的智能提示输入框功能

 
阅读更多

在仿写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

希望有解决办法的读者跟帖回复!谢谢

分享到:
评论

相关推荐

    类google、baidu文本输入框自动补全

    实现类似类google和baidu搜索输入框的智能提示,文本输入框自动补全功能。

    java开源包3

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包4

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包8

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包1

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包11

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包2

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包6

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包5

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包10

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包7

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包9

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包101

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    Java资源包01

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    JAVA上百实例源码以及开源项目

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    JAVA上百实例源码以及开源项目源代码

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

Global site tag (gtag.js) - Google Analytics