当前位置: 首页 > news >正文

el-select filterable模糊搜索在iOS手机上无法弹出软键盘,解决方案

前提:

        el-select filterable模糊搜索在iOS手机上无法弹出软键盘,在手机上使用时,iOS手机,该组件无法唤起软键盘,导致没法进行模糊搜素。

        于是。开始去找原因,发现主要是因为 组件中,input上有一个readonly 属性,而该属性规定输入字段为只读。阻止了用户对值进行修改,直到满足某些条件才行。

 

 其在微信开发者工具上是可以模糊搜索,在手机上没法弹出软键盘搜素。

ios手机 h5没法搜素 

 

 想达到预期效果,效果图

想达到预期效果:可以进行模糊搜素 

 

解决方法 

main.js中
import ElementUi from 'element-ui';ElementUi.Select.computed.readonly = function () {
const isIE = !this.$isServer && !Number.isNaN(Number(document.documentMode));
return !(this.filterable || this.multiple || !isIE) && !this.visible;
};Vue.use(ElementUI)

 页面中

      <div class="from-wrap"><div class="from-title">车牌号</div><div class="from-box"><el-select v-model="dataForm.vehicle_number" clearable filterable placeholder="请选择" style="width: 100%;"ref="selectCar"@focus="clearCar"@hook:mounted="clearCar"@visible-change="clearCar" :clearable="showCloseCar"@change="changeCar"><el-optionv-for="(item,index) in carLists":key="index":label="item.name":value="item.vehicle_number"></el-option></el-select></div></div>

 clearable 清空问题

// 增加一个 showClose,用来控制 clearable 显示隐藏。<template><el-selectref="select"@focus="clear":clearable="showClose"@hook:mounted="clear"@visible-change="clear"@blur.native.capture="onblur"></el-select>
</template>
<script>export default {data(){return{showfalse:false,}},methods: {clear(async) {if (async) { // 打开下拉框 显示可清空按钮this.showClose = true}this.$nextTick(() => {if (!async) {// ios 手机有延迟问题setTimeout(() => {const { select } = this.$refsconst input = select.$el.querySelector('.el-input__inner')input.removeAttribute('readonly')}, 200)}})},// 失去焦点时,需要把软键盘收起onblur() {setTimeout(() => {if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOSthis.$refs.select.blur();}this.showClose = false}}}
</script>

 

完整代码 

data: {showCloseCar: false,
},methods: {
//clearable 清空问题
//如果el-select 还增加了clearable清空功能,会发现当你点击选中时,首先会出现清空按钮,二次点击才能弹出软键盘。
//增加一个 showClose,用来控制 clearable 显示隐藏。clearCar(async) {if (async) { // 打开下拉框 显示可清空按钮this.showCloseCar = true}this.$nextTick(() => {if (!async) {// ios 手机有延迟问题setTimeout(() => {const { selectCar } = this.$refsconst input = selectCar.$el.querySelector('.el-input__inner')input.removeAttribute('readonly')}, 200)}})},// 失去焦点时,需要把软键盘收起onblurCar() {setTimeout(() => {if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOSthis.$refs.selectCar.blur();}this.showCloseCar = false},100)},clearDriver(async) {if (async) { // 打开下拉框 显示可清空按钮this.showCloseDriver = true}this.$nextTick(() => {if (!async) {// ios 手机有延迟问题setTimeout(() => {const { selectDriver } = this.$refsconst input = selectDriver.$el.querySelector('.el-input__inner')input.removeAttribute('readonly')}, 200)}})},changeCar(val) {console.log(val,'changeCar')this.$forceUpdate();},
}
二次点击问题

el-select下拉选项在ios上,需要点击2次才能选中(通过css解决,需确保css样式全局作用域)

// App.vue
<style lang="scss">// to fix 在ios设备中,el-select组件下拉框,点击2次才能选中问题。.el-scrollbar .el-scrollbar__bar {opacity: 1 !important;}
</style

 效果图:

完结,撒花~

🍓结束语🏆

       🍉 还有一些不如的地方大家可以指正,欢迎评论留言。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 计算机网络 | 第三章 数据链路层 | 王道考研自用笔记
  • 服务器时区与数据库时区不一致导致时间bug记录
  • Flutter-使用MethodChannel 实现与iOS交互
  • Three.js做了一个网页版的我的世界
  • C++方法封装成dll及C#调用示例
  • Spring Boot + Mybatis Plus实现登录注册
  • UbuntuServer 22.04.4安装GitLab
  • 生成式人工智能 - 本地windows 11 + PyCharm运行stable diffusion流程简述
  • C++类与对象(拷贝与类的内存管理)
  • Ubuntu 22.04 下 CURL 分块上传文件(C++)
  • AIRNet模型使用与代码分析(All-In-One Image Restoration Network)
  • 【小白学Python】自定义图片的生成(二)
  • 用Python绘制yolo训练结果比较图-论文需要
  • 鸿蒙轻内核A核源码分析系列六 MMU协处理器(1)
  • 【稳定检索/投稿优惠】2024年智慧金融与财务管理国际会议(SFFM 2024)
  • docker python 配置
  • ECS应用管理最佳实践
  • iOS 系统授权开发
  • leetcode讲解--894. All Possible Full Binary Trees
  • Redis 懒删除(lazy free)简史
  • uva 10370 Above Average
  • 欢迎参加第二届中国游戏开发者大会
  • 将回调地狱按在地上摩擦的Promise
  • 类orAPI - 收藏集 - 掘金
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 区块链分支循环
  • 小试R空间处理新库sf
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 整理一些计算机基础知识!
  • ​linux启动进程的方式
  • ​如何使用QGIS制作三维建筑
  • #HarmonyOS:基础语法
  • $().each和$.each的区别
  • (10)STL算法之搜索(二) 二分查找
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (剑指Offer)面试题34:丑数
  • (三十五)大数据实战——Superset可视化平台搭建
  • (译)计算距离、方位和更多经纬度之间的点
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net core控制台应用程序初识
  • .net web项目 调用webService
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET导入Excel数据
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET与 java通用的3DES加密解密方法
  • .Net中ListT 泛型转成DataTable、DataSet
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • [ C++ ] STL---仿函数与priority_queue
  • [20171113]修改表结构删除列相关问题4.txt