基于jquery的自动补全

写个简单的自动补全,供学习的朋友参考,希望对大家所有帮助



需要先引入jquery,注意自己的引入路径

<script type="text/javascript" src="js/jquery.min.js"></script>

<input  id="chooseCity" type="text" placeholder="输入城市查询">

页面初始化时调用下下面方法即可,传两个参数,一个元素id跟数据

$(function(){
    var data = ['七里香','站长素材','HTML5特效','wshlfx.com',47,'你在哪','去哪啊'];//所有数据

    searchCityLoad("chooseCity",data);//调用初始化方法  chooseCity是input元素id, data是数据,
});

这里是初始化元素的方法,用时只需要调用改方法即可,
参数一 eleId 表示元素id
参数二 arr表示数据

这里的值只有一个,有些需要几个值的,比如显示值跟选择值等,不同需求的话也可根据修改

//========初始化开始========
    function searchCityLoad(eleId,arr){

    //如果需要动态改变的话,
    //每次执行前可以先移除事件
    //$("#"+eleId).unbind();

        //绑定事件
        $("#"+eleId).bind('input propertychange',function(){

            $("#"+eleId).after('<div style="position:absolute;z-index:9;overflow:hidden;border: 1px solid #cccccc;border-bottom:0;border-top:0;" ></div>');
                            $("#"+eleId).next('div').width($("#"+eleId).outerWidth()-2);//设置元素宽度
$("#"+eleId).next('div').css({"margin-left":$("#"+eleId).css("margin-left")});//设置元素边距

            var arrNew = [];
            var i;
            for(i=0;i<arr.length;i++){
                var arrItems=arr[i];
                //判断元素是否存在于arrNew中,
                //如果不存在则插入到arrNew的最后
                if($.inArray(arrItems,arrNew)==-1) {
                    arrNew.push(arrItems);
                }
            }

            //这是将input中输入的数据有关联的全部加入新生成的div中显示出来
            for(i=0;i<arrNew.length;i++){
                var arrWord = arrNew[i].toString();
                if(((arrWord.indexOf($("#"+eleId).val())) > -1) && ($("#"+eleId).val().length > 0)){
                    var addArrWord = '<div class="auto-screening-zms" style="cursor:pointer;width:100%;height:30px;line-height:30px;border-bottom:1px solid #cccccc;background:#ffffff;padding: 0 10px;">' + arrWord + "</div>";
                    $("#"+eleId).next('div').append(addArrWord);
                }
            }

            /*将显示出来的div的内容去重复,input内容变动时去重复*/
            $(".auto-screening-zms").each(function(){
                if($(this).text().indexOf($("#"+eleId).val()) < 0){
                    $(this).remove();
                }else if($("#"+eleId).val().length == 0){
                    $("#"+eleId).next('div').addClass("auto-hidden");
                    $(".auto-screening-zms").remove();
                }
            }); 

            /*弹出的提示div去重复*/
            $(".auto-screening-zms").each(function(i, iText){
                var iTextHtml = iText.innerHTML;
                $(".auto-screening-zms").each(function(j, jText){
                    var jTextHtml = jText.innerHTML;
                    if (i < j && iTextHtml == jTextHtml) {
                        $(this).remove();
                    }
                });
            }); 

            //元素悬停事件,设置悬停样式
            $(".auto-screening-zms").hover(function(){
                $(this).css("background","#cccccc");
            },function(){
                $(this).css("background","#ffffff");
            });

            /*点击下拉元素传值*/
            $(".auto-screening-zms").on("click",function(){
                $("#"+eleId).val($(this).text());
                $(".auto-screening-zms").remove();
            })
        })
    }
    //========初始化结束========
时间: 2025-01-30 01:19:39

基于jquery的自动补全的相关文章

PHP+jQuery实现自动补全功能源码_php技巧

前面手工写了一个下拉自动补全功能,写的简单,只实现了鼠标选择的功能,不支持键盘选择.由于项目很多地方要用到这个功能,所以需要用心做一下.发现select2这个插件的功能可以满足当前需求. 在使用jquery插件select2的过程中遇到了一些疑惑,无论是穿json数据还是通过jsonp方式取数据,都能够正确返回.可是下拉列表中的条目却不能被选中,对鼠标和键盘选择都无效. 后来发现,select2插件在实现选中时是以数据中的id字段为准的.所以不管是json还是jsonp,ajax返回的数据都必须

jQuery实现邮箱下拉列表自动补全功能_jquery

记得,在上个项目中,遇到这样一个需求,网站要求填写邮箱的时候,还没有填写完,就会出现一系列下拉列表,帮助自动补全邮箱的功能.今天小编给给大家分享下我基于jquery是怎么实现此功能的! 功能简述 •填写邮箱名字,出现下拉列表,自动补全邮箱 •点击上下按键,选取下拉列表邮箱 •按回车键,选中列表内容,隐藏下拉列表 •鼠标经过,下拉列表选项设置为高亮 •鼠标点击,选中下拉列表选项,隐藏下拉列表 HTML HTML代码很简单,我们就一个简单的输入框,然后一个ul标签,在内部可以放好多li标签. <ht

详解jQuery UI库中文本输入自动补全功能的用法_jquery

自动补全(autocomplete),是一个可以减少用户输入完整信息的UI 工具.一般在 输入邮箱.搜索关键字等,然后提取出相应完整字符串供用户选择. 一.调用autocomplete()方法 $('#email').autocomplete({ source : ['aaa@163.com', 'bbb@163.com', 'ccc@163.com'], }); 二.修改autocomplete()样式   由于autocomplete()方法是弹窗,然后鼠标悬停的样式.通过Firebug 想

jQuery实现Email邮箱地址自动补全功能代码_jquery

本文实例讲述了jQuery实现Email邮箱地址自动补全功能代码.分享给大家供大家参考,具体如下: jQuery Email邮箱地址自动补全代码,输入Email时,会自动加入@符号,在输入框中输入"qq"."Sina"."163"等等可以看到效果:鼠标经过提示Email时,高亮该条Email,鼠标点击Email时,文本框内容替换成该条Email,并删除提示层. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js

jQuery实现文本框邮箱输入自动补全效果_jquery

  邮箱自动完成的效果在网站上大多都看过,但是质量参差不齐,今天突然在网上看到一篇博客,感觉这个插件很好,就想来写一下分享给大家!  效果图如下: 完整demo代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

jquery css实现邮箱自动补全_jquery

 今天在公司做一个电子商务网站的注册会员时,要求用户在电子邮箱文本框中输入时,给与热点提示常用的电子邮箱,帮助用户选择,提高体验效果.下面是用Jquery+css实现的邮箱自动补全,供大家参考和学习. HTML代码:emailAutoComple.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>邮箱自动补全&

使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法_javascript技巧

根据网上查找到的 typeahead使用方法,到最后一步时就出错,数据能从数据库读取出来,但在输入框显示提示时,全都显为:underfined.捉摸了半天都发现不了问题出在哪儿.后来在http://blog.64cm.com/post/2014/08/13/%E4%BD%BF%E7%94%A8bootstrap-typeahead%E6%8F%92%E4%BB%B6 上不经意发现这么一句话:"在当前版本的typeahead中,已经不再支持在source属性中直接调用ajax方法获取数据源了.&q

基于jquery实现的自动补全功能

 这篇文章主要介绍了基于jquery实现的自动补全功能的方法,涉及jQuery操作数据实现补全的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了基于jquery实现的自动补全功能的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: $(function() { // 自动补全 var maxcount = 0;// 表示他最大的值 var thisCount =0;// 初始化他框的位置 $("body").prepend("<div

jquery实现文本框的文本自动补全效果

 这篇文章主要介绍了jquery实现文本框的文本自动补全效果,大家参考使用吧   代码如下: /*文本自动补全 zhouxiang*/   (function ($) {     $.Completion = function (setting) {         var opts = $.extend({}, $.Completion.DefaultSetting, setting);         //宽度         var Completion_Width = null;