使用ajax完成自动补全

来源:互联网 发布:免费下载电视直播软件 编辑:程序博客网 时间:2024/06/08 17:24

jsp代码:
        <table>

   <tr>

<td style="width: 80px;font-size: 16px;padding-left: 10px;">
                <span class="span">设备编号:</span>
            </td>
            <td style="width: 100px;">
                <input autocomplete="off" path="cjqNo" name = "cjqNo"  htmlEscape="false" onclick="cjqclick()" oninput="OnInput (event)" id="tags"  maxlength="200"  class=" form-control input-sm input_boder bqinput"/>
                <div id="cjqno" class="bqdiv"  style="border:1px solid #eeeeee;position:absolute  ;display:none; width:10.7% ; z-index:10; background:  #eee;max-height:200px;overflow-x:hidden ;text-align:left;overflow-x:hidden;"></div>            
            </td>    
        </tr>
        </table>

js代码:

<script type="text/javascript">
    $(function () {
        $.ajaxSetup ({ cache: false });
    })
    /*  单击输入框触发下拉选择事件并加载所有的数据;没有任何传入参数  */
    function cjqclick() {
        $("#tags").empty();
        var text = $("#tags").val();
//         var buildId = $("#louceng").val();
        //清空下拉选项显示的div位置
        $("#cjqno").empty();
        document.getElementById("cjqno").style.display = "";
        $.post("${ctx}/pems/cjq/json", {"inputText" : text
            },function(data) {
            var json = data;
            //清空下拉选项显示的div位置
            $("#cjqno").empty();
            //拼接下拉选项
            $(json).each(
                    function(index, obj) {
                        $("#cjqno").append("<ul id='buildli' class='auto' style='margin-bottom: 1px; width: 100%;' >"+obj.cjqNo+"</ul>");
                    });
        });
    }
    
    
    
    //输入值触发事件加载与输入值相关的属性项;传入参数:输入的值
    function OnInput (event) {
         $("#tags" ).empty();
        //获取输入的值
        var text =$( "#tags" ).val();
        //清空下拉选项显示的div位置
        $("#cjqno" ).empty();
        document.getElementById("cjqno").style.display="";
        $.post("${ctx}/pems/cjq/json",{"inputText":text}, function(data) {
            var json=data;
            //清空下拉选项显示的div位置
            $( "#cjqno" ).empty();
            //拼接下拉选项
            $(json).each(function (index, obj) {
                  $("#cjqno").append("<ul id='buildli' class='auto' style='margin-bottom: 0px; width: 100%;font: 20px;'>"+obj.cjqNo+"</ul>");
            });  
        });
    }
    
    $('#buildli').live('click',function(){
         document.getElementById("tags").value=$(this).text();
         $('#cjqno').empty();
        
    });

    //点击输入框意外的位置关闭下拉项
    $(document).bind('click',function(e){
        var e = e || window.event; //浏览器兼容性
        var elem = e.target || e.srcElement;
        while (elem) { //循环判断至跟节点,防止点击的是div子元素
            if (elem.id && elem.id=='cjqno') {
               return;
            }
            if(elem.id&&elem.id=='tags'){
               return;
            }
            elem = elem.parentNode;
        }
        $('#cjqno').css('display','none'); //点击的不是div或其子元素
    });
    </script>


controller 层

    @RequestMapping(value = {"json"})
    public @ResponseBody List<Cjq> json(Cjq cjq , HttpServletResponse response,PrintWriter out) {
        List<Cjq> list = cjqService.findjson(cjq);    
        return list;
    }


原创粉丝点击