jquery实现手机端弹出下拉选择及搜索效果代码

代码语言:html

所属分类:表单美化

代码描述:jquery实现手机端弹出下拉选择及搜索效果代码

代码标签: 弹出 下拉 选择 搜索 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!doctype html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />



    <meta name="viewport" content="width=device-width, initial-scale=1.0,  minimum-scale=1.0, maximum-scale=1.0" />



<style>
    @charset "utf-8";
.seach_name {
	display: block;
	font-size: 0.24rem;
	color: #666;
	border: 1px solid #e0e0e0;
	padding: 0.2rem 0.2rem;
	width: 88%;
	margin: 0.2rem auto;
	border-radius: 4px;
}

#mymodal {
	width: 100%;
	height: 100%;
	position: absolute;
	left: 0;
	top: 0;
	bottom: 1rem;
	background-color: rgba(0, 0, 0, .6);
	display: none;
	z-index: 9999;
}

.modal-main {
	position: fixed;
	bottom: -900px;
	left: 0;
	height: 75%;
	width: 100%;
	background-color: #fff;
	font-size: .22rem;
	/*	margin-bottom: 0.3rem;*/
}

.address-title {
	font-size: 0.26rem;
	text-align: center;
	padding: 0.2rem 0;
	color: #222;
	border-bottom: 1px solid #EFEFEF;
	display: flex;
}

.address-title .cancel {
	color: #666;
}

.address-title .ensure {
	color: #1e83d3;
}

.address-title .title {
	font-weight: 700;
	flex: 2;
}

.close {
	position: absolute;
	padding: 0.05rem 0.25rem;
	right: 0rem;
	top: 0rem;
	color: #9a9da7;
	font-size: 0.5rem;
}

.optionwrapper {
	border-bottom: 1px solid #e0e0e0;
	display: flex;
	padding-left: .2rem;
	height: .6rem;
	box-sizing: border-box;
}

.active-option {
	border-bottom: 1px solid #FF2440;
}

.option-content {
	position: absolute;
	top: 0.8rem;
	left: 0;
	right: 0;
	bottom: 0;
}

.option-group {
	display: none;
	overflow: auto;
	height: 100%;
	border-top: 1px solid #EFEFEF;
	padding: 0 .3rem;
}

.option-list {
	padding: .2rem .2rem;
	display: flex;
	border-bottom: 1px solid #efefef;
}

.checked {
	width: .15rem;
	height: .15rem;
	background-color: #FF304A;
	display: inline-block;
	margin-left: .2rem;
	border-radius: 50%;
	display: none;
	margin-top: .1rem;
}
</style>
	
</head>

<body>
    <form action="" style="display: flex;justify-content:center;">
        <input type="text" id="project" placeholder="请选择科目名称" onFocus="this.blur()" style="width: 80%;
        height: 50px;
        border: 1px solid #ccc;
        border-radius: 5px;
        line-height: 50px;
        margin: 50px auto;
        text-align: center;
        font-size: 20px;
    }">
    </form>

    <!-- 模板 -->
    <script type="text/html" id="script_cus_select">
        <section id="mymodal">
            <div class="modal-main">
                <div class="fixWidth address-title" style="display: flex;text-align: center;">
                    <div class="cancel" style="flex:1;">取消</div>
                    <div class="title" style="flex:2;">${title}</div>
                    <div class="ensure" style="flex:1;">确认</div>
                </div>
    
                <div class="option-content">
                    <input class="seach_name" placeholder="请输入搜索名称"/>
                    <ul class="option-group option-group-one" data-index="0" style="display: block"></ul>
                </div>
            </div>
        </section>
    </script>

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>



    <script type="text/javascript">
    (function (doc, win) {
    //  html
    var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () {
            var clientWidth = docEl.clientWidth;
            if (!clientWidth) return;
            clientWidth = (clientWidth > 768 ) ? 768 : clientWidth ; docEl.style.fontSize = clientWidth / 7.5 + 'px';
        };
    if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false);
    recalc();
})(document, window);
        cusSelect('project', {
            title: '选择科目',
            data: [
                { text: '科目-1', id: 1 },
                { text: '科目-2', id: 2 },
                { text: '科目-3', id: 3 },
                { text: '科目-4', id: 4 },
                { text: '科目-5', id: 5 },
                { text: '科目-6', id: 6 },
                { text: '科目-7', id: 7 },
                { text: '科目-8', id: 8 },
                { text: '科目-9', id: 9 },
                { text: '科目-10', id: 10 }
            ],
            callback: function (data) {
                $("#project").val(data.text);
                $("#project").parent().find('[name=project_id]').remove();
                $("#project").parent().append(`<input type="hidden" name="project_id" value="${data.id}" />`);
            }
        }).init();

        /**
        * 自定义下来狂
        * @param option
        */
        function cusSelect(eleId, config = {}) {
            let option = Object.assign({}, {
                title: '学校',
                selectTag: '',
                multi: false,//多选
                searchAjax: false,//搜索是否异步,请写异步获取数据方法
                selectFun: function () { },
                callback: function () { }
            }, config || {}), tplData = { title: option.title }, tpl = $("#script_cus_select").html();

            /**
             * 初始化
             */
            const init = function () {
                //初始化模板
                let tplc = tpl.replace(/\$\{(.*?)\}/i, function (match, $1) {
                    return tplData[$1];
                });
                option.selectTag = `cusSelect_${eleId}`;
                $('#' + option.selectTag).remove();
                $('body').append(`<div id="${option.selectTag}">${tplc}</div>`);

                initData(option.data || []);
                bindEvent();
            };

            /**
             * 初始化数据
             */
            const initData = function (data .........完整代码请登录后点击上方下载按钮下载查看

网友评论0