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

AI智能体项目管理框架agent-pm:从原理到实战的多智能体协作指南

在人工智能和自动化技术快速发展的今天,多智能体系统已成为实现复杂任务自动化的重要技术路径。其核心原理在于通过任务分解、角色分配和状态管理,让多个AI智能体像人类团队一样协同工作,从而突破单个模型的性能边界。这种架构的技术价值在于将软件工程中成熟的项目管理方法论引入AI领域,显著提升了自动化流程的可预测性、可观测性和可复用性。在实际应用场景中,多智能体协作框架能够高效处理从代码开发、文档撰写到数据分析等一系列任务,尤其适合需要多步骤、多专业协同的复杂项目。本文聚焦的agent-pm框架,正是这一领域的典型实践

weixin_42533910的博客 714

使用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

PTA编程—币值转换

我对于这个题的主要思想就是把九位数分三块,对每块进行处理后,再合并。有了这个思想就开始写代码,后面就是哪有洞补哪,哪个测试用例没通过就对其特殊处理…。反正最后测试用例全通过了。 #include<iostream> #include <string> #include <algorithm> using namespace std; char a[10]={'a','b','c','d','e','f','g','h','i','j'}; //既然题目说了最多9位

uyo9ko的博客 991

同花顺CM函数深度解析:如何精准设置历史换手衰减系数以优化筹码峰

本文深度解析同花顺CM函数中的历史换手衰减系数,揭示其如何影响筹码峰准确性。通过拆解CM函数参数,并提供基于前十大流通股东锁定比例的计算公式,指导用户精准设置该系数,从而优化筹码峰模型,使其更真实反映个股持仓成本分布,提升技术分析的有效性。

mango的博客 1781

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

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

肖波的博客 1万+

weblogic启动异常故障处理(boot认证失败)

root 用户生成的文件属主为 root,WebLogic进程将无权读取,直接导致认证失败。· ⚠️ 密码必须完全一致:第3步 AdminAccount 命令中设置的密码,与第5步所有 boot.properties 文件中 password= 字段的值,必须保证完全一致。如果您的域下配置了受管服务器实例(如 ms_server1、ms_server2 等),必须逐一更新各实例下的免密启动文件,确保实例重启时密码与AdminServer保持一致,否则实例启动会因认证失败而报错。此步骤至关重要,必须执行。

weixin_53389944的博客 222

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

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

gitblog_00389的博客 554

【STM32学习】(29)STM32实现595驱动三个数码管(标准库和HAL库实现)

我选用的单片机型号为:STM32F103系列 74LS595是一个串转并行输出的芯片,它能为单片机节省很多的IO口,应用场景广泛。 现要求三个数码管动态显示,常规设计都是并行实现,需要8个IO数据口,然后还需要3个IO片选数码管接口,这样大大占用了IO口,导致连接的外设变少。因此我们引入74LS595芯片。电路设计如下: 只需要三个共阴极数码管与三个595芯片级联即可完成,通过RCLK,SCK,SER三个IO即可完成对数码管的动态控制并显示。电路焊接的实物图如下: 要求完成功能:实现数.

XiaoCaiDaYong的博客 8265

lgv20刷twrp_LG港版v20 root

这是LG港版v20 root,整理了一下有关LG港版v20的官方固件包了,有没有需要的呢,这里把固件包整理一下也是方便大家以后好下载了,因此有一些机友还是不知道在哪里下载官方的rom包,在这里说的固件rom包也就是原版的系统包了,大家可以放心的使用,这些系统包也都是支持线刷的,大家下载下来解压出来根据里面的相关教程来操作就可以了,很简单的,如果你也需要的话就一起来看看吧。软件提示注意!! 此过程会...

weixin_33212263的博客 5387

使用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

从零开始:在Windows WSL中搭建Openfoam7+blastfoam2.0.0开发环境(避坑大全)

本文详细指导在Windows WSL中搭建OpenFOAM 7与BlastFOAM 2.0.0开发环境,重点解析了安装过程中的常见“坑点”,如编译模式不匹配导致的符号错误,并提供了从系统准备、软件部署到环境验证的完整解决方案,帮助开发者高效构建CFD与爆炸模拟开发平台。

stem5的博客 527

iOSselect 项目常见问题解决方案

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

gitblog_00788的博客 786

药物对接仿真软件:HADDOCK_(5).HADDOCK中蛋白质-配体对接流程

半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。如果是PDB格式,确保文件包含所有必要的原子信息。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。

kkchenjj的博客 1081

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值