智能提示

简介:自动提示无非就是输入框内容改变时,自动根据输入的内容进行模糊查询;

手动实现无非两种方式,一种异步加载数据,根据获取的内容异步加载到网页相应位置,第二种同步获取数据,然后异步根据输入框的改变进行查询;

异步由于得到的就是json很好处理,今天经过摸索倒是想到了另一种方法,有点奇葩,写出来与大家分享,欢迎大家指点;

思路:采用第二种方法,同步获取数据,用c标签实现遍历,然后进行判断显示;

相关js代码:

function autoHintW(){
    $("#processList0").empty();
    var p="", q="", value="";
        q+="<c:if test='${users!=null }'>";
        q+="    <c:forEach items='${users }' var='vr'>";
        p = "";
        p+="        <li>";
        value = '${vr.USER_ID}_${vr.NAME }';
        p+="            <input type='radio' name='users' value="+value+">";
        p+="            <input type='checkbox' name='cusers' value='"+value+"'>";
        p+="            <label class='abc'>${vr.NAME }</label>";
        p+="        </li>";
        var xx = $("#tab0 input[type=text]").val();
        if(xx == "" || value.indexOf(xx) >= 0){
            $("#processList0").append(p);
        }
    q+="    </c:forEach>";
    q+="</c:if>";
    load();
}

相关网页代码:

<div id="tab0">
    <input type="text" style="margin-top: 10px;"/>
    <ul id="processList0">
        <script>
            autoHintW();
        </script>
    </ul>
</div>

当然智能提示存在鼠标键盘事件,本来想用onchange的但是鼠标必须移开输入框才会触发,所以考虑用keyup,但是触发太过频繁,需要设置时间响应:

$("#tab0 input[type=text]").keyup(function(){
    setTimeout("autoHintW()",1000);
});
$("#tab1 input[type=text]").keyup(function(){
    setTimeout("autoHintD()",1000);
});
$("#tab2 input[type=text]").keyup(function(){
    setTimeout("autoHintR()",1000);
});

 

 欢迎大家访问我的博客:http://www.cnblogs.com/handsomecui/p/7235806.html

posted @ 2017-07-25 18:30  handsomecui  阅读(367)  评论(0编辑  收藏  举报