• jQuery+css模拟下拉框模糊搜索的实现


    html:

    @*输入框*@
    <div>
        <input type="text" style=" 85%; height: 34px;" onkeyup="InputChange(this)" id="txtInput">
    </div>
    @*模拟下拉框*@
    <div class="divselect" id="dpSelect">
    
    </div>

    css:

    /*选择框效果*/
    .divselect {
        float: left;
        position: relative;
        z-index: 3003;
        background: #fff;
        display: none;
        width: 85%;
    }
    .divselect ul {
        padding: 0;
        margin: 0;
        border: 1px solid #E4E4E4;
        background-color: #ffffff;
        position: absolute;
        z-index: 30000;
        margin-top: -1px;
        width: 100%;
        overflow: auto;
        max-height: 200px;
    }
    .divselect ul li {
        list-style-type: none;
        cursor: pointer;
        height: 24px;
        line-height: 24px;
    }
    .divselect ul li:hover {
        background: #ccc;
    }

    js:

    <script type="text/javascript">
        //点击模拟下拉框以外的地方 下拉框消失
        $(document).bind('click', function (e) {
            var e = e || window.event; //浏览器兼容性
            var elem = e.target || e.srcElement;
            while (elem) { //循环判断至跟节点,防止点击的是div子元素
                if (elem.id && elem.id == 'dpSelect') {
                    return;
                }
                elem = elem.parentNode;
            }
            $('#dpSelect').css('display', 'none'); //点击的不是div或其子元素
        });
    
        //用文本框onkeyup事件触发InputChange方法 InputChange方法判断文本框文字是否改变 文字改变则触发SearchName方法
        var sOldValue;
        sOldValue = "";
        function InputChange(arg) {
            var vNewValue = $(arg).val();
            if (sOldValue != vNewValue) {
                //根据条件查询结果并给下拉框动态赋值
                SearchName(arg);
                sOldValue = vNewValue;
            }
        }
        function SearchName(arg) {
            var name = $(arg).val();
            //如果搜索框为空 则返回false
            if (name == "") {
                $("#dpSelect").attr("style", "display:none");
                return false;
            }
            else {
                $("#dpSelect").attr("style", "display:block");
            }
            //获取数据 并给下拉框动态赋html
            $.ajax({
                type: "post",
                url: "......",
                data: { name: name },
                dataType: "",
                async: false,
                success: function (data) {
                    var strs = "";
                    strs += "<ul>";
                    for (var i = 0; i < data.length; i++) {
                        strs += '<li onclick="SetValue(this)">' + data[i] + '</li>';
                    }
                    strs += "</ul>";
                    $("#dpSelect").html(strs);
                },
                error: function () {
                    alert("查询出错");
                }
            });
    
        }
        //点击模拟下拉框内选项后 给文本框赋值 关闭下拉框
        function SetValue(arg) {
            var value = $(arg).text();
            $("#txtInput").val(value);
            $("#dpSelect").attr("style", "display:none");
        }
    </script>
  • 相关阅读:
    Pandas速查手册中文版
    MySQL-增删改查
    主从复制-常见问题
    redis-主从复制
    高级数据类型-GEO
    高级数据类型-HyperLogLog
    高级数据类型-bitmaps
    redis-redis.conf基础配置
    删除策略--逐出策略
    删除策略-过期数据
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/7927891.html
Copyright © 2020-2023  润新知