iosSelect插件 H5中实现iOS的select下拉联动效果

H5使用iosselect实现一级、二级下拉,使用jq或者vue html部分直接使用就可,一般都是通过input标签来触发,不过在H5里有时候会有安卓、ios兼容问题,所以这里实现通过点击p标签来触发选择事件。使用 iosselect 需要下载iosSelect.css 和iosSelect.js 可以去文档demo的代码里找文件。一样input可能会有安卓、ios 兼容问题所以也是用p标签来实现触发,先说通过jq实现,直接引入文件,注意引入路径。vue 中使用iosselect插件。文档和demo可以访问。至此 jq方法实现结束。iosselect 和。 阅读详情

简要说明

官网:http://zhoushengfe.com/iosselect/website/index.html
下载:在官网点击 github 菜单项就可以下载此插件。

下载好后可以看到两个文件夹,将src下的两个文件放到工程里的对应位置引入之后就可以按照说明进行使用了,这个插件更适用于移动端。
还有一个demo文件夹,里面是一些下拉联动效果的实例,可以参考它们使用 来实现想要的功能。

因为我个人认为demo实例中的代码有些啰嗦,所以只提取了需要的部分,将一些实例部分重写了下,请往下看。

先引入几个文件:

<link rel="stylesheet" type="text/css" href="css/iosSelect.css" />
<script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
<script src="js/iosSelect.js"></script>

一个最基本的实例:

<label>商铺类型:<input type="text" name="shopType" id="shopType" placeholder="请选择商铺类型" /></label>

var shopTypeList = [{ "id": "10000", "value": "自助餐" }, { "id": "10001", "value": "私房菜" }, { "id": "10002", "value": "超市" }];

$("#shopType").on("focus",function(){
    new IosSelect(1, [shopTypeList], {
        callback: function (selectOneObj) {
            $("#shopType").val(selectOneObj.value);
        }
    });
});

参数说明:

通过new IosSelect({});来调用这个插件,一共有三个参数:

  • level (Number类型,数据的层级,最多支持6层)
  • data (Array类型,要显示的数据,可以有多个(几个代表有几列);每个对象必须有id、value[、parentId],做关联的时候(如省市区)要用到parentId)
  • options (Object类型,包含其余选项,含以下几个属性(加*的为必选项))
    • *callback : 选择完毕后的回调函数
    • container: 实例化后的对象包裹元素
    • title: 标题
    • itemHeight: 每一项的高度
    • itemShowCount :组件展示的项数,可选3,5,7,9,不是3,5,7,9则展示7项
    • headerHeight: 组件标题栏高度
    • cssUnit: css尺寸单位,可选px或者rem
    • addClassName: 组件额外类名,用于自定义样式
    • relation: 各级选项之间是否通过parentId关联,如:[1, 1] (一共3级都关联) / [1, 1, 1, 0,] (一共5级(列),1234关联,5不关联),默认都不关联[0, 0, 0, 0, 0];注意:关联的数据要加parentId属性
    • oneLevelId(twoLevelId / threeLevelId / fourLevelId / fiveLevelId / sixLevelId):实例展示时,第n级数据默认选中值,默认为第n级数据第一项id
    • showLoading:实例展示时,在数据显示之前下拉菜单是否显示加载中的效果,建议ajax获取数据时设置为true,默认false

Demos

可通过 自定义属性 结合 参数options属性 oneLevelId(twoLevelId / …) 实现 从指定数据开始显示 和 从上一次选择的数据开始显示 功能。

一级级联:
<label>商铺类型:<input type="text" name="shopType" id="shopType" placeholder="请选择商铺类型" /></label>
<!-- **这里第一次弹出时是从第一项开始显示,若想第一次就从指定项开始显示 可以加个自定义属性:data-shopType-code="10001" -->

$("#shopType").on("focus",function(){
    new IosSelect(1, [[{ "id": "10000", "value": "自助餐" }, { "id": "10001", "value": "私房菜" }, { "id": "10002", "value": "超市" }]], {
        title: '选择商铺类型',
        oneLevelId: $("#shopType").attr('data-shopType-code'),
        callback: function (selectOneObj) {
            $("#shopType").attr('data-shopType-code', selectOneObj.id);
            $("#shopType").val(selectOneObj.value);
        }
    });
});
二级级联:
<label>请选择将领:<input type="text" name="leader" id="leader" placeholder="请选择将领" /></label>

var suData = [{'id': '10001', 'value': '刘备'}, {'id': '10002', 'value': '关羽'}, {'id': '10003', 'value': '张飞'}, {'id': '10004', 'value': '诸葛亮'}, {'id': '10005', 'value': '赵云'}];
var weiData = [{'id': '20001', 'value': '曹操'}, {'id': '20002', 'value': '曹冲'}, {'id': '20003', 'value': '曹丕'}, {'id': '20004', 'value': '曹植'}, {'id': '20006', 'value': '曹仁'}];
$("#leader").on("click",function(){
    new IosSelect(2,
            [suData, weiData],
            {
                title: '将领选择',
                oneLevelId: $("#leader").attr('data-su-id'),
                twoLevelId: $("#leader").attr('data-wei-id'),
                callback: function (selectOneObj, selectTwoObj) {
                    $("#leader").attr('data-su-id', selectOneObj.id);
                    $("#leader").attr('data-wei-id', selectTwoObj.id);
                    $("#leader").val('蜀国将领是:' + selectOneObj.value + ' 魏国将领是:' + selectTwoObj.value);
                }
            });
});
三级级联:

省市区通过parentId关联

<label>省市区类型:<input type="text" name="address" id="address" data-province-code="120000" data-city-code="120100" data-district-code="120102" placeholder="请选择省市区" /></label>

var proCityArea = {
    "provinces": [{ "id": "110000", "value": "北京市",  "parentId": "0" }, { "id": "120000", "value": "河北省", "parentId": "0" }],
    "cities": [{ "id": "110100", "value": "北京市", "parentId": "110000" },{ "id": "0", "value": "县", "parentId": "-1" }, { "id": "120100", "value": "廊坊市", "parentId": "120000" },{ "id": "120200", "value": "石家庄市", "parentId": "120000" }],
    "Areas": [{ "id": "110101", "value": "东城区", "parentId": "110100" }, { "id": "110102", "value": "西城区", "parentId": "110100" }, { "id": "120101", "value": "广阳区", "parentId": "120100" }, { "id": "120102", "value": "固安县", "parentId": "120100" }, { "id": "120201", "value": "桥东区", "parentId": "120200" }]
};
$("#address").on("focus",function(){
    new IosSelect(3, [proCityArea.provinces, proCityArea.cities, proCityArea.Areas], {
        title: '选择省市区',
        relation: [1,1],
        oneLevelId: $("#address").attr('data-province-code'),
        twoLevelId: $("#address").attr('data-city-code'),
        threeLevelId: $("#address").attr('data-district-code'),
        callback: function (selectOneObj, selectTwoObj, selectThreeObj) {
//                    data-province-code="120000" data-city-code="120100" data-district-code="120102"
            $("#address").attr('data-province-code', selectOneObj.id);
            $("#address").attr('data-city-code', selectTwoObj.id);
            $("#address").attr('data-district-code', selectThreeObj.id);
            $("#address").val(selectOneObj.value + '-' + selectTwoObj.value + '-' + selectThreeObj.value);
        }
    });
});
六级级联:

传入(多个)方法,在方法中获取数据

<label>选择日期:<input type="text" name="dataTime" id="dataTime" placeholder="请选择日期" /></label>

var $dataTime = $('#dataTime');
// 初始化时间数据(点击默认显示当前日期,年份数据是当前年份的前后五年)
var dateTime = (function(){var now=new Date();var nowYear=now.getFullYear();var nowMonth=now.getMonth()+1;var nowDate=now.getDate();$dataTime.attr("data-year",nowYear);$dataTime.attr("data-month",nowMonth);$dataTime.attr("data-date",nowDate);function formatYear(nowYear){var arr=[];for(var i=nowYear-5;i<=nowYear+5;i++){arr.push({id:i+"",value:i+"年"})}return arr}function formatMonth(){var arr=[];for(var i=1;i<=12;i++){arr.push({id:i+"",value:i+"月"})}return arr}function formatDate(count){var arr=[];for(var i=1;i<=count;i++){arr.push({id:i+"",value:i+"日"})}return arr}var yearData=function(callback){callback(formatYear(nowYear))};var monthData=function(year,callback){callback(formatMonth())};var dateData=function(year,month,callback){if(/^(1|3|5|7|8|10|12)$/.test(month)){callback(formatDate(31))}else{if(/^(4|6|9|11)$/.test(month)){callback(formatDate(30))}else{if(/^2$/.test(month)){if(year%4===0&&year%100!==0||year%400===0){callback(formatDate(29))}else{callback(formatDate(28))}}else{throw new Error("month is illegal")}}}};var hourData=function(one,two,three,callback){var hours=[];for(var i=0,len=24;i<len;i++){hours.push({id:i,value:i+"时"})}callback(hours)};var minuteData=function(one,two,three,four,callback){var minutes=[];for(var i=0,len=60;i<len;i++){minutes.push({id:i,value:i+"分"})}callback(minutes)};var secondsData=function(one,two,three,four,five,callback){var seconds=[];for(var i=0,len=60;i<len;i++){seconds.push({id:i,value:i+"秒"})}callback(seconds)};return[yearData,monthData,dateData,hourData,minuteData,secondsData]})();

$dataTime.on("focus",function(){
    new IosSelect(6, dateTime, {
        title: '时间选择',
        itemShowCount: 9,
        oneLevelId: $dataTime.attr('data-year'),
        twoLevelId: $dataTime.attr('data-month'),
        threeLevelId: $dataTime.attr('data-date'),
        fourLevelId: $dataTime.attr('data-hour'),
        fiveLevelId: $dataTime.attr('data-minute'),
        sixLevelId: $dataTime.attr('data-second'),
        callback: function (selectOneObj, selectTwoObj, selectThreeObj, selectFourObj, selectFiveObj, selectSixObj) {
            $dataTime.attr('data-year', selectOneObj.id);
            $dataTime.attr('data-month', selectTwoObj.id);
            $dataTime.attr('data-date', selectThreeObj.id);
            $dataTime.attr('data-hour', selectFourObj.id);
            $dataTime.attr('data-minute', selectFiveObj.id);
            $dataTime.attr('data-second', selectSixObj.id);
            $dataTime.val(selectOneObj.value + selectTwoObj.value + selectThreeObj.value + ' ' + selectFourObj.value + ':' + selectFiveObj.value + ':' + selectSixObj.value);
        }
    });
});

还可以ajax获取数据,显示加载中效果。具体代码看下载文件夹中的 demo/ajax 目录下实例。

自定义样式:

默认样式:
这里写图片描述

可通过:options.addClassName(如:addClassName: ‘iosSelectStyle’)属性 来添加自定义css类名。之后就可以自定义样式了,如:

.ios-select-widget-box.olay.iosSelectStyle { background: rgba(0, 0, 0, 0.5) }
.iosSelectStyle header.iosselect-header a.close,
.iosSelectStyle header.iosselect-header a.sure { color: #0c9 }
.iosSelectStyle ul li.at { color: #0c9 }

这里写图片描述

iosSelect.js 模拟ajax返回数据 立即下载

相关推荐

IosSelect控件

一款很好的仿IOS的手机端下拉框控件,使用方法参考http://blog.csdn.net/nepaltrip/article/details/78105353

js移动端那些事之iosSelect.js

关于js移动端与iosSect.js

yjwu5353的博客 6775

iosSelect.js 五级联动(最多支持六级联动)

iosSelect.js 省市县乡村五级分类js和css文件

【亲测免费】 iOSSelect组件使用指南

iOSSelect是一款专为解决跨平台(Android 和 iOS)下拉菜单样式及交互一致性的组件。它模仿了iOS下的原生select控件的交互和外观,旨在提供统一且美观的选择体验。 ### 主要特点: - **无依赖**:仅需引入一个JS和CSS文件即可。 - **自定义样式**:虽然提供了默认样式,但你可以根据需求自定义样式。 - **兼容多种框架**:适用于jQuery, Zepto, ...

gitblog_00331的博客 899

iosselect:webapp通用选择器

iOS选择 html拖放菜单选择在安卓和IOS下表现不一样,iosselect正是为统一拖放菜单样式而生,我们以IOS导航下选择的交互和样式为蓝本,开发了这一组件。 官网 备用网址: ://www.pengwf.com/iosselect/index.html 特色 0依赖,只需引用一个js和css即可 样式可自己定制,也可使用样式 一个页面同时实例化多个组件 jQuery zepto angular vue react均适用 支持最多6级级联 支持设置高度和高度单位 适用于android和iOS设备(PC端支持IE9 +,不过PC端上滑动体验不太实用) 起步 npm npm install iosselect 下载文件 点击下载文件到项目目录中,在HTML文件中插入以下代码,并按需调整路径。 < link rel =" stylesheet " href =" /static/cs

好看的h5日期选择器

好看的h5日期选择器,基于iosselect和网上流传的datepicker进行修改。

IOS 安卓机 显示 H5万能选择器:iosselect H5中实现iOS的select下拉联动效果

iOSSelect.js H5中实现iOS的select下拉联动效果 http://zhoushengfe.com/iosselect/website/index.html#user-content-demos 引入文件: &lt;link rel="stylesheet" href="/static/css/iosSelect.css"&gt; &lt;script type="tex...

芬梧书生的博客 1124

H5仿ios选择弹窗/多级联动选择

H5仿ios选择弹窗/多级联动选择

js模拟ios联动插件(H5万能选择器:iosselect)

https://github.com/zhoushengmufc/iosselect/ iosselect是个什么东西? 移动端浏览器对于select的展示样式是不一致的,ios下是类似原生的picker,安卓下各浏览器展示各异,我们需要一个选择器组件来统一各端下各种浏览器的展示。下面是它的一个截图: iosselect 项目地址: 文档和demo可以访问github:https://github...

qq_26642611的博客 1288

JS模拟IOS联动选择插件iosselect代码.zip

有兴趣刚需的可以自己下载,非常实用的代码,可以完美运行,有能力的还可以二次修改!

JS模拟IOS联动选择插件iosselect代码

JS模拟IOS联动选择插件iosselect代码,使用非常简单,只需引用一个js和css即可,样式可自己定制,也可使用默认样式。

H5万能选择器:iosselect

移动端浏览器对于select的展示样式是不一致的,ios下是类似原生的picker,安卓下各浏览器展示各异,我们需要一个选择器组件来统一各端下各种浏览器的展示。

cr7villa7owen10的博客 9617

PIV实验流场流速云图(MALAB contour函数用法)

clear;clc; for k=1:5 str1=['filename1']; str2=['filename2']; str3=['filename3']; str=eval(['str',num2str(k)]); load(str); [m n]=size(y); y=flipud(y); v=-v; x=x-x(1,...

Nick_Cui的博客 3223

使用iosSelect实现时间选择

1、引入文件 <link rel="stylesheet" type="text/css" href="iosSelect/iosSelect.css"/> <script src="jquery-1.10.2.js" type="text/javascript" charset="utf-8"></script> <script src="iosSele...

swagLi的博客 2410

Autodesk Genuine Service卸载失败?试试这个隐藏文件删除法(Win8-Win11通用)

本文针对Autodesk Genuine Service在Windows系统(Win8-Win11)中卸载失败的常见难题,提供了深度解析与根治方案。核心方法是手动定位并删除两个关键的隐藏文件(ProductInformation.pit和id.dat),以解除文件锁定或数据损坏导致的卸载障碍,随后再通过标准流程即可成功卸载。该方法通用性强,能有效解决这一困扰设计师和工程师的顽固问题。

weixin_29220405的博客 1475

CMU开源NavRL:深度强化学习如何破解无人机动态避障难题?

卡内基梅隆大学(CMU)开源了NavRL框架,利用深度强化学习解决无人机在复杂环境中的动态避障难题。该框架通过创新的状态表示、多目标奖励函数设计以及独立的安全屏障机制,使无人机能够通过仿真训练自主学会灵活、安全的导航策略,并成功实现从仿真到真实环境的零样本迁移。

hope8的博客 720

h5使用iosselect.js实现日期选择器datepicker

之前有在weui datepicker在pc端无法正常使用,使用iOSSelect代替这篇文章中提到用iOSselect.js实现datepicker,但是没有上传例子,今天在这里上传一个实例给大家看看,如果有需要的可以直接用。 先看一下实例:datePicker. 源码下载:datePicker源码 效果图如下: 然后看看代码 html: <!DOCTYPE html&g......

肖波的博客 1万+

基于大模型的重度膝关节骨关节炎全流程预测与治疗方案研究

本研究基于大模型构建了重度膝关节骨关节炎(KOA)预测体系,涵盖术前风险预测、手术方案优化、术中监测和术后康复指导全流程。通过分析临床和影像数据,模型在手术风险预测准确率(85%)、并发症预警(血栓预测准确率88%)等方面显著优于传统方法。研究实现了临床数据与AI技术的深度融合,术前预测指导麻醉选择(如高危患者推荐椎管内麻醉),术中实时监测生命体征,术后个性化康复方案使患者HSS评分平均提升45分。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1389

Claude代码模板:如何将开发时间从数小时压缩到5分钟?

你是否曾花费数小时配置项目环境,只为搭建一个简单的开发框架?Claude代码模板正是为了解决这一痛点而生的开发加速器,它通过预制的多语言模板,让开发者能够专注于核心业务逻辑而非重复配置工作。 ## 🕒 传统开发 vs 模板化开发的效率对比 | 开发阶段 | 传统开发方式 | Claude代码模板方式 | 时间节省 | |---------|-------------|------------

gitblog_00389的博客 554

GB28181协议心跳机制:从标准解读到代码实现的保活策略

本文深入解析GB28181协议中的心跳机制,从标准解读到代码实现,详细介绍了保活策略的核心价值和底层逻辑。通过实战案例和技术要点,帮助开发者优化心跳间隔、超时次数等参数配置,提升安防监控系统的可靠性和性能。文章还提供了代码实现的防坑指南和特殊场景处理建议,适用于各类网络环境下的设备在线状态管理。

weixin_29611239的博客 105

YOLOv8改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附修改后的C2f+Bottleneck)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv8中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。通过本文你能够了解到DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加(DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPs)。

Snu77的博客 9572

使用iOSSelect.js实现iOS的select下拉选择日期的联动效果

引入文件: <link rel="stylesheet" href="/static/css/iosSelect.css"> <script type="text/javascript" src="/static/js/iosSelect.js"></script> HTML部分: <div class="mui-input-row"> ...

小城市的故事 745

使用python中pypower进行电力潮流计算

使用python中pypower进行电力潮流计算

总裁余(余登武)博客 4862

iOSselect 项目常见问题解决方案

iOSselect 是一个用于统一 HTML 下拉菜单 `select` 在安卓和 iOS 设备上表现的开源项目。该项目以 iOS 下 `select` 的交互和样式为蓝本,开发了一个通用的选择器组件。iOSselect 支持多种前端框架,如 jQuery、Zepto、Angular、Vue 和 React,并且支持最多 6 级级联选择。该项目的主要编程语言是 JavaScript,同时也使用了 ...

gitblog_00788的博客 786

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: layer组件的使用
下一篇: 记录地址
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值