select设置text的值选中(兼容ios和Android)基于jquery
前一段时间改了一个bug,是因为select引起的。当时我没有仔细看,只是把bug改完了就完事了,今天来总结一下。
首先说option中我们通常会设置value的属性的,还有就是text值的,请参见下面的HTML代码:
<select class="sel" name="">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
<option value="5">five</option>
<option value="6">six</option>
</select>
大家基本上都是这样的, 然后两种操作,一种是让用户自己选择,然后获取选中的value值,或者是里面的text值。当然了,大部分都是value,取到,然后传给后台就可以了。这个基本上是没有难度的。请看下面的js代码:
$(".sel").change(function(){
var val = $(this).val();
alert(val);
var text1 = $(this).find("option:selected").text();
alert(text1);
})
这里就不详情的讲了。在ios和安卓上面也是没有问题的。
最主要的问题出在了设置的时候,如果后台给出的value的值的话,我其实我们设置也是比较简单的。直接使用$(".sel").val("值");就可以了。但是难就难在了如果和后台是给的我们text 的值的话,设置起来就稍微的麻烦了。
然后我就去百度了,搜索到了很多文章,其中包括咱们博客园的,都是使用的这种方法:
$(".sel").find("option:contains('six')").attr("selected",true);
其中的“six”假设是后台传给前端的需要选中的值。这种办法,在电脑上和Android上面表现是正常的,但是在ios端是不可以的。这种办法并不能使用。究其原因就是因为ios端是不让设置的,只能通过val才能改变其中的值。所以就有了下面的方法:
$(".sel option").each(function(i,item){
if("six" == $(item).text()){
$(".sel").val($(item).val());
}
})
相信大家也能看懂,就是利用循环,把这个select标签下的,所有的option循环起来。找到了对应的项,然后获取到相应的val,然后在去设置val的值,让该选中的项选中。这种办法亲测,可以兼容ios端。
最后附上所有的代码,可以直接粘贴到编辑器自己测试。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
</head>
<body>
<h1>为了测试selsect的选择,并且测试ios和Android是不是有兼容问题!</h1>
<select class="sel" name="">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
<option value="5">five</option>
<option value="6">six</option>
</select>
<button class="button1">让第六个选中</button>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(".sel").change(function(){
var val = $(this).val();
alert(val);
var text1 = $(this).find("option:selected").text();
alert(text1);
})
$(".button1").on("click",function(){
//$(".sel").find("option:contains('six')").attr("selected",true);
$(".sel option").each(function(i,item){
if("six" == $(item).text()){
$(".sel").val($(item).val());
}
})
})
</script>
</html>
(其中的29行就是原来的写法,并不能兼容ios,大家可以自己测试。)
如果大家有什么好的办法,也欢迎大家在评论区留言。谢谢~
select设置text的值选中(兼容ios和Android)基于jquery的更多相关文章
- 利用React Native 从0到1 开发一款兼容IOS和android的APP(仿造京东)
最近有一部电视剧叫做<微微一笑很傻逼>里面有个男猪脚,人们都叫他大神~我觉得吧~大神是相对的~所以~啥事都得谦虚! 好了 今天介绍的是如何从0到1利用React Native开发一款兼容I ...
- 兼容ios和Android的复制js代码
//2种方法本人全部亲测有效 方法1:比较简单 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- js的new Date兼容iOS和Android
在写一个移动端的报名活动页面时,其中一个逻辑是:过了报名日期,“立即报名”按钮置灰,不允许报名:具体逻辑如下,在真机上测试的时候,Android端可以把按钮失效,iOS则是无法把按钮失效.后台返回的时 ...
- 打开页面默认弹出软键盘,同时兼容iOS和Android
// 示例1 open_soft_keyboard({ input: "#username" }); // 示例2 open_soft_keyboard({ input: 'inp ...
- JavaScript调用App原生代码(iOS、Android)通用解决方案
实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来.这个场景应该算是比较完整的一次H5中的 ...
- radio,checkbox,select,input text获取值,设置哪个默认选中
11 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title& ...
- jquery操作select(option)的取值,设置和选中
比如 <select class="selector"> <option value ="volvo">Volvo</option ...
- Jquery设置select控件指定text的值为选中项
<select name="streetid" id="streetid"> <option value="4">北 ...
- 使用val()另一个妙用------选中select/checkbox/radio的值
一直认为val()方法只有两个功能:1.能设置元素的值,2.获取元素的值.知道val()方法还有另外一个妙用,就是它能使select(下拉列表框).checkbox(多选框)和radio(单选框)相应 ...
随机推荐
- ASP.NET Core Web API 索引 (更新Identity Server 4 视频教程)
GraphQL 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上) 使用ASP.NET Core开发GraphQL服务器 -- 预备知识(下) [视频] 使用ASP.NET C ...
- redis的Sorted Set类型!!!!
一.概述: Sorted Set(有序集合)和Set类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted Set中的每一个成员都会有一个分数(sc ...
- 5.3Role和Claims授权「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Role授权 这是一种Asp.Net常用的传统的授权方法,当我们在 ...
- synchronized关键字简介 多线程中篇(十一)
前面说过,Java对象都有与之关联的一个内部锁和监视器 内部锁是一种排它锁,能够保障原子性.可见性.有序性 从Java语言层面上说,内部锁使用synchronized关键字实现 synchronize ...
- Lumen框架—升级改造之路-仓储层
仓储层与逻辑层搭建 Lumen官方文档:https://lumen.laravel.com/docs/5.5 我的项目地址:https://github.com/BusinessL/big-lume ...
- 【swoole】使用swoole简单实现TCP服务
上一篇写到了如何在windows系统上面利用docker快速搭建swoole开发环境,接下来体验下swoole的使用 使用swoole实现tcp服务 <?php $serv = new Swoo ...
- 正向代理&反向代理 简(fu)明(za)解释
最近写的东西越来越偏向Web程序员了··· 你想读懂本篇,就要知道什么是Web服务器——装在世界上某个机房里某台机器里某个操作系统里的一个,对外(公网或者你能访问)服务各种你需要的信息的软件! 它可以 ...
- [ArcGIS API for JavaScript 4.8] Sample Code-Popups-1-popupTemplate的概念和popup中属性字段值的多种表现形式
[官方文档:https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/index.html] 一. ...
- 史上最全的springboot导出pdf文件
最近项目有一个导出报表文件的需求,我脑中闪过第一念头就是导出pdf(产品经理没有硬性规定导出excel还是pdf文件),于是赶紧上网查看相关的资料,直到踩了无数的坑把功能做出来了才知道其实导出exce ...
- ansible基础-安装与配置
一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. an ...