`
天极网络
  • 浏览: 9858 次
  • 性别: Icon_minigender_1
  • 来自: 朔州
社区版块
存档分类
最新评论

js实现自动补全及手风琴效果

阅读更多
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
    <title>js实现自动补全及手风琴效果</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="js实现自动补全及手风琴效果">
    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
        }

        a {
            text-decoration: none;
        }

        ul, li {
            list-style: none;
        }

        body {
            font-size: 14px;
            font-family: "微软雅黑"
        }

        /*设置背景*/
        .bg {
            /* background:
                url("http://imgstore.cdn.sogou.com/app/a/100540002/714894.jpg")
                no-repeat; */
            background: url("http://img.netbian.com/file/2020/0710/93b4f00e30f595a020b0e7dc09338154.jpg") no-repeat;
            /*background: url("image/bg.jpg") no-repeat;*/
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-size: cover;
            z-index: -1;
        }

        #container {
            width: 640px;
            height: 70px;
            margin: 260px auto;
        }

        .inputs {
            width: 560px;
            height: 45px;
            border: none;
            float: left;
            text-indent: 1em;
            font-family: "微软雅黑";
            box-shadow: inset 0 0 1em #ccc
        }

        .searchBtn {
            height: 45px;
            background: #fff;
            display: inline-block;
            float: left;
            width: 77px;
            text-align: center;
            line-height: 45px;
            border-left: 1px solid #ccc;
            font-size: 16px;
        }

        .searchBox {
            border: 1px solid #ccc;
            height: 45px;
        }

        #autoBox {
            display: none;
        }

        #autoBox li {
            height: 35px;
            border-bottom: 1px solid #ccc;
            line-height: 35px;
            padding-left: 10px;
            font-size: 12px;
        }

        #autoBox li:HOVER {
            background: #eaeaea;
        }

        .itemBox {
            width: 300px;
            background: #fff;
            position: absolute;
            height: 100%;
            top: 0;
            left: 0;
        }

        .itemBox li {
            overflow: hidden;
        }

        .items {
            height: 32px;
            border-bottom: 1px solid #ccc;
            line-height: 32px;
            transition: all 1s ease;
            padding-left: 20px;
            position: relative;
        }

        .showpan {
            position: absolute;
            top: 0;
            left: 260px;
            width: 100%;
            height: 100%;
            background: red;
        }
    </style>
    <script type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $(".items").append("<div class='showpan'></div>");
            $(".items").hover(function () {
                $(this).find(".showpan").css("background", randomColor()).stop(true, true).animate({
                    left: 0
                });
            }, function () {
                $(this).find(".showpan").css("background", randomColor()).stop(true, true).animate({
                    left: 260
                });
            });

            function randomColor() {
                var r = Math.floor(Math.random() * 256);
                var g = Math.floor(Math.random() * 256);
                var b = Math.floor(Math.random() * 256);
                return "rgb(" + r + "," + g + "," + b + ")";
            }
        });
        window.onload = function () {
            //实现jquery中的css方法
            var keyBoxDOM = function (id) {
                var dom = document.getElementById(id);
                return {
                    css: function (opts) {
                        for (var key in opts) {
                            var v = opts[key];
                            if (typeof v == "number") {
                                v += "px";
                            }
                            dom["style"][key] = v;
                        }
                    }
                }
            };
            window.keyBoxDOM = keyBoxDOM;
            //获取input输入框
            var keybox = document.getElementById("keyBox");
            //获取自动提示框
            var autobox = document.getElementById("autoBox");
            //获取下拉框
            var ulbox = document.getElementById("ulBox");
            //获取按钮ID
            var btnChang = document.getElementById("btnChang");
            var index = -1;
            //var index = 0;
            //重新绑定事件
            keybox.onkeyup = autoComplete;
            keybox.onkeydown = autoComplete;

            function autoComplete() {
                //拿到input 的宽度和高度
                var inw = this.offsetWidth;
                var inh = this.offsetHeight;
                //输入框值
                var value = this.value;
                //验证
                var check = value.match(/@/ig);
                if (check && check.length > 1) {
                    this.value = value.substring(0, value.length - 1);
                    return;
                }
                if (value.indexOf("@") !== -1) {
                    keyBoxDOM("autoBox").css({
                        display: "block",
                        width: inw,
                        height: "215",
                        marginTop: 45,
                        background: "#f9f9f9"
                    });
                    //拼接数据
                    ulbox.innerHTML = getMailHTML(value);
                    //动态绑定事件
                    var lis = ulbox.children;
                    for (var i = 0; i < lis.length; i++) {
                        lis[i].onclick = function () {
                            keybox.value = this.innerHTML;
                            keybox.onkeyup = autoComplete;
                            keybox.onkeydown = autoComplete;
                        }
                    }
                }
            }

            //通过键盘控制
            document.onkeyup = function (e) {
                //键码38 40
                var ev = e || window.event;
                var code = ev.keyCode || ev.which;
                //获取所有的li
                var lis = ulbox.children;
                /* if (code == 40) {//向下
                    keybox.onkeyup = null;
                    keybox.onkeydown = null;
                    if (index == lis.length) {
                        index = 0;
                    }
                    for (var i = 0; i < lis.length; i++) {
                        lis[i].style.background = "none";
                    }
                    lis[index].style.background = "#ccc";
                    keybox.value = lis[index].innerHTML;
                    index++;

                }
                if (code == 38) {//向上

                } */
                if (code === 40) {//向下
                    keybox.onkeyup = null;
                    keybox.onkeydown = null;
                    if (index === lis.length - 1) {
                        index = 0;
                    } else {
                        index++;
                        if (index > lis.length - 1) {
                            index = 0;
                        }
                    }
                    if (index !== -1) {
                        for (var i = 0; i < lis.length; i++) {
                            lis[i].style.background = "none";
                        }
                        lis[index].style.background = "#ccc";
                        keybox.value = lis[index].innerHTML;
                    }
                }
                if (code === 38) {//向上
                    if (index === -1) {
                        index = lis.length - 1;
                    } else {
                        index--;
                        if (index < 0) {
                            index = lis.length - 1;
                        }
                    }
                    if (index !== -1) {
                        for (var i = 0; i < lis.length; i++) {
                            lis[i].style.background = "none";
                        }
                        lis[index].style.background = "#ccc";
                        keybox.value = lis[index].innerHTML;
                    }
                }
                if (code === 13) {//回车键
                    autobox.style.display = "";
                }
            };

            function getMailHTML(value) {
                var arr = ["163.com", "126.com", "qq.com", "gmail.com", "sohu.com", "sina.com"];
                var html = "";
                for (var i = 0; i < arr.length; i++) {
                    //html += "<li onclick='selectMe(this);'>" + value + arr[i] + "</li>";
                    html += "<li>" + value + arr[i] + "</li>";
                }
                return html;
            }

            //静态绑定
            /*function selectMe(obj) {
                document.getElementById("keybox") = obj.innerHTML;
            }*/

            autobox.onmouseleave = function () {
                this.style.display = "none";
            };
            btnChang.onmouseover = function () {
                this.style.background = "#eaeaea";
            };
            btnChang.onmouseleave = function () {
                this.style.background = "#f9f9f9";
            }
        }
    </script>
</head>

<body>
<!-- 设置背景 -->
<div class="bg"></div>
<div id="container">
    <div class="searchBox" style="">
        <input type="text" class="inputs" id="keyBox" placeholder="请输入邮箱"/>
        <a href="" class="searchBtn" id="btnChang">搜索</a>
        <div id="autoBox">
            <ul id="ulBox">
            </ul>
        </div>
    </div>
</div>
<div>
    <ul class="itemBox">
        <li class="items">0</li>
        <li class="items">1</li>
        <li class="items">2</li>
        <li class="items">3</li>
        <li class="items">4</li>
        <li class="items">5</li>
        <li class="items">6</li>
        <li class="items">7</li>
        <li class="items">8</li>
        <li class="items">9</li>
        <li class="items">0</li>
        <li class="items">1</li>
        <li class="items">2</li>
        <li class="items">3</li>
        <li class="items">4</li>
        <li class="items">5</li>
        <li class="items">6</li>
        <li class="items">7</li>
        <li class="items">8</li>
    </ul>
</div>
</body>
</html>
  • 大小: 638 KB
0
1
分享到:
评论

相关推荐

    js各种插件

    这种插件实现了手风琴式的折叠展开效果,通常用于显示和隐藏内容,节省空间并增强页面的可读性。 9. **map百度地图封装js**: 百度地图API提供了一个JavaScript接口,用于在网页中集成地图功能。封装后的js可能...

    jquery插件jquery-ui-1.8.2.custom.min.js

    Widgets是jQuery UI的核心,包括Accordion(手风琴效果)、Autocomplete(自动补全)、Dialog(对话框)等。Effects则提供了各种动画效果,如Fade(淡入淡出)、Slide(滑动)等。Position模块提供了元素相对定位的...

    移动端组件

    搜索组件与查询组件类似,但可能包含更多高级功能,如自动补全、过滤选项等。在大型数据集的搜索场景中,它能提供更高效的搜索体验。 9. **提示组件**: 提示组件用于显示临时通知,如信息提示、成功消息、错误...

    JQueryUI组件 JS下载

    - **Accordion(手风琴)**: 可折叠的面板,允许用户逐个展开或全部隐藏内容。 - **Tabs(选项卡)**: 将内容分隔成多个可切换的面板,提高页面组织性。 - **Slider(滑块)**: 用于选择数值或进行等级评价的滑动...

    ajax特效框架

    - **其他组件**:如 accordions(手风琴效果)、tabs(选项卡)和 autocompleter(自动补全)等,增强了用户界面的交互性。 **使用Script.aculo.us的步骤** 1. **引入库**:在HTML文件中添加Script.aculo.us和...

    《Prototype and script.aculo.us终极揭秘》

    2. **UI组件**:script.aculo.us包含了许多可重用的UI组件,如Autocompleter(自动补全)、Draggable(可拖动元素)、Slider(滑块)和Sortable(可排序列表)等,这些组件极大地提升了用户体验。 3. **Builder模块...

    JQuery UI插件

    它提供了一系列丰富、交互式的界面元素,如对话框、拖放功能、日期选择器、进度条、 accordions(手风琴效果)和 tabs(选项卡)等,帮助开发者快速构建美观且易于操作的网页应用。 ### 1. jQuery UI 的核心组件 -...

    JQuery-ui

    - **Accordion(手风琴)**:允许在一个容器内展示多个折叠面板,每次只能打开一个。 - **Slider(滑块)**:创建可拖动的滑块,常用于设置值或者进度控制。 - **Datepicker(日期选择器)**:为输入字段添加日期...

    jQuery UI组件 jQuery UI

    2. **Accordion(手风琴)**:手风琴组件允许内容以折叠/展开的方式呈现,节省页面空间,用户可以根据需要查看详细信息。 3. **Dialog(对话框)**:对话框组件创建可自定义的模态或非模态窗口,用于提示、确认、...

    jquery-ui插件

    - **Accordion(手风琴)**: 将多个段落折叠成一列,每次只能展开一个段落。 - **Slider(滑块)**: 提供一种可滑动的选择器,常用于调整数值或选择范围。 - **Datepicker(日期选择器)**: 为输入字段提供一个日历...

    jquery ui 帮助文档

    2. **Accordion(手风琴)**:手风琴组件允许在一个有限的空间内展示多个可折叠的面板,展开一个面板时其他面板会自动关闭,适合用于展示层次结构的信息。 3. **Tabs(选项卡)**:选项卡组件用于将内容分隔到不同...

    Jquery Custom UI

    - **Autocomplete(自动补全)**: 提供搜索建议,帮助用户快速输入。 - **Button(按钮)**: 将HTML链接或输入元素转换为具有视觉吸引力的按钮。 - **Dialog(对话框)**: 创建模态或非模态窗口,用于显示通知、...

    jquery-ui-1.9.0.custom.zip

    6. **Autocomplete(自动补全)**:为输入框添加自动补全功能,提升输入效率,常见于搜索框和表单填充。 7. **Sortable(可排序)**:允许用户通过拖放操作对列表或表格进行排序,适用于内容管理或任务管理界面。 ...

    jquery.ui-1.6rc2

    最后,ui 文件夹是jQuery UI的核心组件所在,包括了如Accordion(手风琴)、Autocomplete(自动补全)、DatePicker(日期选择器)、Dialog(对话框)、Draggable(可拖动)、Droppable(可放置)、Resizable(可调整...

    .net jQuery Web ControlToolkit 开源组件

    - Accordion(手风琴):允许在一个有限的空间内显示多个折叠面板,只显示一个面板内容。 - AutoComplete(自动完成):为输入框提供自动补全功能,常见于搜索框或表单填写。 - DatePicker(日期选择器):提供...

    jquery-ui-1.11.4

    5. **自动完成(Autocomplete)**:为输入框提供自动补全功能,提升输入效率,适用于搜索框、表单填写等场景。 6. **布局工具**:如Accordion(手风琴)和Tabs(标签页),有助于组织内容,节省页面空间。 7. **...

    jQueryUI官方实例集

    8. **Autocomplete(自动补全)**:为输入框添加自动补全功能,可以根据用户输入的字符提供匹配建议。 9. **Effects(特效)**:提供了多种动画效果,如淡入淡出、滑动等,让页面过渡更加平滑。 ### 学习与应用 ...

    jquery-ui 框架

    - **Accordion(手风琴)**:允许用户展开和折叠内容区域,节省页面空间。 - **Slider(滑块)**:用于数值选择或时间调整,常见于音量控制、进度条等场景。 - **Tabs(标签页)**:将内容分割到多个标签页中,提高...

    jQuery UI参考手册

    - **Accordion(手风琴)**:展示折叠内容,只允许一次打开一个部分,常用于节省空间展示大量信息。 - **Tabs(标签页)**:将内容组织成多个标签页,方便用户切换查看。 - **Slider(滑块)**:提供一种直观的...

    jQuery-ui下载资源

    - **Accordion(手风琴)**:将多个内容区域折叠在一组容器内,每次只能展开一个。 - **Slider(滑块)**:用于选择数值或进行等级评分的滑动条。 - **Tabs(标签页)**:将内容分隔到不同的标签页中,方便切换。...

Global site tag (gtag.js) - Google Analytics