js实现类似百度提示功能

<div>
   <input id="condition" name="object.name" type="text" onkeyup="doQuery()"/> 这个键盘事件很重要实现动态交互
<div id="div" style="position: absolute;z-index: 100"> <table id="table"> </table> </div> <div>

以上是基本的JSP页面

-----------------------------------------------------------------------------------------------------------------------------------------------------

对应的JS代码

$(function(){
             $("condition").val("");//刷新的时候清除表单值
    //----------------------提示信息--------------------------------
            $("#condition").bind("mouseover", function () {
                doQuery();
                $("#div").show();
            }).bind("mouseout", function () {
                $("#div").hide();
            }).bind("onkeyup",function(){
                getLinkData();
            });
            
            $("#div").bind("mouseover", function () {
                $("#div").show();
            }).bind("mouseout", function () {
                $("#div").hide();
            })
});
function getLinkData() {
                var div = $("#div");            //获得对应的div对象
                var table= $("#table");       //获得对应的tbody对象
                var condition= $("#table");  //获得对应的输入框对象
                clear();//清除联想输入提示框的内容
                //利用ajax获取后台的模糊查询的数据,并且封装成下拉列表的形式展现出来
                $.ajax( {
                    type : "POST",
                    dataType : "json",
                    url : $.WEB_ROOT + ‘‘,
                    data : jQuery.param( {
                        "condition":$.trim($("#condition").val())},
                    
             error:function(){
                                alert("没有对应的数据,请查看输入的查询条件!");
                                },
                    success : function(data) {//当Ajax提交成功时调用的方法
                                  if(data.length==0){
                                      return;
                                      }
                                  setOffsets();//设置联想输入下拉列表提示框的位置
                                  var tr,td,text;
                                  for (var i = 0; i < data.length; i++) {//根据返回的值,手动的拼tbody的内容
                                      text = document.createTextNode(data[i].name);//从Action中返回的数据中取出name的值
                                      td = document.createElement("td");//创建一个td的对象           
                                      tr = document.createElement("tr");//创建一个tr的对象      className="mouseOver;     
                                      $(td).mouseover(function(){
                                          $(this).attr("class","mouseOver");
                                      });
                                      $(td).mouseout(function(){
                                          $(this).attr("class","");
                                      });
                                      td.onclick = function(){populateModel(this)};//单击td是的方法为populateModel   
                                      td.appendChild(text);
                                      tr.appendChild(td);            
                                      div.appendChild(tr);
                                  }
                                }
                        });
                //点击下拉列表中的某个选项时调用的方法
                function populateModel(cell) {
                        clear();
                        condition.value = cell.firstChild.nodeValue;
                        //initOtherData(condition.value);利用输入框中的数据调用其他方法,初始化其他数据
                        clear();//清除自动完成行                        
                }
                //清除自动完成行,只要tbody有子节点就删除掉,并且将将外围的div的边框属性设置为不可见的
                function clear() {
                    while (div.childNodes.length > 0) {
                        div.removeChild(div.firstChild);
                    }
                    div.attr("display", "none");
                }
                //设置下拉列表的位置和样式
                function setOffsets() {
                    var width = condition.offsetWidth;//获取linkDataProperty输入框的相对宽度
                    var left = getLeft(condition);
                    var top = getTop(condition) + condition.offsetHeight;
            
                    div.style.border = "black 1px solid";
                    div.style.left = left + "px";
                    div.style.top = top + "px";
                    div.style.width = width + "px";
                }
                //获取指定元素在页面中的宽度起始位置
                function getLeft(e) {
                    var offset = e.offsetLeft;
                    if (e.offsetParent != null) {
                        offset += getLeft(e.offsetParent);
                    }
                    return offset;
                }
                //获取指定元素在页面中的高度起始位置
                function getTop(e) {
                    var offset = e.offsetTop;
                    if (e.offsetParent != null) {
                        offset += getTop(e.offsetParent);
                    }
                    return offset;
                }
            }
        
          //清空输入框中的数据
            function clear() {
                var condition=document.getElementById("condition");
                condition.value="";
            }

------------------------------------------------------------------------------------------------------------------------------------------------

下拉框滑动选择颜色变化对应的css

.mouseOver{
    background: red;
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。