js 动态搜索提示

采用 Js DOM Ajax 动态生成搜索提示
如百度搜索,你输入java,会如下如下提示
这里写图片描述
我简单模仿实现该功能,源码:https://github.com/jiaoxiangyu/searchHint

html代码:

<form action="searchCon" name="form" class="form1" id="form1" method="post">
    <input class="search" id="search" name="search" type="search" tabindex="1"
        required="required" onkeyup="sreach()" onblur="loseFocus()" onfocus="sreach()" >
    <input class="but" type="submit" value="百度一下"
        onclick="check()">
    <div class="myDiv" id="myDiv"></div>        
</form>

js代码:

function check() {
    var f = document.getElementById("search");
    if (f.checkValidity() == false) {
        f.setCustomValidity("不能为空");
    }else{
        submit;
    }
}
//ajax异步处理提示数据
function sreach() {
    var name = document.getElementById("search").value;
    if (name == "" || name==null) {
        removeCode();

    } else {

        var xmlhttp;
        if (window.XMLHttpRequest) {
            // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
            xmlhttp = new XMLHttpRequest();
        } else {
            // IE6, IE5 浏览器执行代码
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

                /*
                 * document.getElementById("myDiv").innerHTML =
                 * xmlhttp.responseText;
                 */
                var result = xmlhttp.responseText;
                var json = eval("(" + result + ")");
                addNode(json);
            }
        }
        xmlhttp.open("POST", "searchMeg", true);
        xmlhttp.setRequestHeader("Content-type",
                "application/x-www-form-urlencoded");
        xmlhttp.send("name=" + name);
    }

}
//添加ul 、li结点
function addNode(json) {
    if (json != null || json != "") {
        removeCode();
        var mydiv = document.getElementById("myDiv");
        var ul = document.createElement("ul");
        ul.id="mydiv_ul";
        mydiv.appendChild(ul);
        for (var i = 0; i < json.length; i++) {
            var nextNode = json[i];
            var li = document.createElement("li");
            var litext = document.createTextNode(nextNode);
            li.appendChild(litext);         
            ul.appendChild(li); 
            /*var no=i+2;
            li.setAttribute('TabIndex', no);*/
        }       
        mydiv.style.border = "black 1px solid";                 
    } 
}
//删除ul 、li结点
function removeCode() {
    var e = document.getElementById("myDiv");
    var size = e.childNodes.length;
    for (var k = size - 1; k >= 0; k--) {
        e.removeChild(e.childNodes[k]);
    }
    var mydiv = document.getElementById("myDiv");
    mydiv.style.border = "none";
}
//搜索框失去焦点
function loseFocus(){

    var ul = document.getElementById("mydiv_ul");   

    if(document.activeElement.id!="myDiv"){
        removeCode();
    }else{              
        var obj_lis = ul.getElementsByTagName("li");
        for(var i=0;i<obj_lis.length;i++){
            obj_lis[i].onclick = function(){                                 
                document.getElementById("search").value=this.innerHTML;
                document.getElementById("form1").submit();

            }
        }
    }
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值