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

news2024/11/29 9:38:27

前提:

        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-option
                              v-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-select
        ref="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.$refs
			            const 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|iOS
						this.$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.$refs
                   const 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|iOS
                this.$refs.selectCar.blur();
               }
                        this.showCloseCar = false
            },100)
       },
       clearDriver(async) {
           if (async) { // 打开下拉框 显示可清空按钮
                this.showCloseDriver = true
           }
          this.$nextTick(() => {
                if (!async) {
                 // ios 手机有延迟问题
                setTimeout(() => {
                const { selectDriver } = this.$refs
                const 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

 效果图:

完结,撒花~

🍓结束语🏆

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1815636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分析GIS在疾病传播模型和公共卫生决策中的作用

在这个全球化日益加深的时代&#xff0c;疾病的跨国界传播成为全球公共卫生面临的重大挑战。地理信息科学&#xff08;GIS&#xff09;作为一门集成了空间数据采集、处理、分析及可视化的技术体系&#xff0c;在公共健康领域展现出其不可替代的价值。本文旨在深入探讨GIS如何助…

「面试必看」JS百题斩~ 原型 与 原型链

什么是原型&#xff0c;为什么需要原型 原型的强大之处在于&#xff0c;如果一组属性应该出现在每一个实例上&#xff0c;那我们就可以重用它们——尤其是对于方法。如下例子&#xff1a; function User(name,age){this.name name;this.age age;this.sayHi function(){con…

Linux命令-⽤户、权限管理

目录 <1>查看当前⽤户&#xff1a;whoami <2>查看登录⽤户&#xff1a;who <3>退出登录账户&#xff1a; exit <4>添加⽤户账号&#xff1a;useradd <5>设置⽤户密码&#xff1a;passwd <6>删除⽤户&#xff1a;userdel <7>切换⽤户…

【数据结构】双向链表(C语言)

哈喽铁子们&#xff0c;这里是博主鳄鱼皮坡。这篇文章将分享交流双向链表的相关知识&#xff0c;下面正式开始。 1. 双向链表的结构 注意&#xff1a;这里的“带头”跟前面我们说的“头节点”是两个概念&#xff0c;实际前面的在单链表阶段称呼不严 谨&#xff0c;但是为了老…

【教程】DGL单机多卡分布式GCN训练

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ PyTorch中的DDP会将模型复制到每个GPU中。 梯度同步默认使用Ring-AllReduce进行&#xff0c;重叠了通信和计算。 示例代码&#xff1a; 视频&#xff1…

C++怎么根据变量名称返回变量的值?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 有点好奇你这么做是为了什么。…

[Redis] Redis Desktop Manager 安装包和连接和创建流程

1. 安装流程就是next&#xff0c;就可以。 2. 分别填写好&#xff1a; Name(自定义&#xff0c;redis这个库展示的名字), Host, Port, Auth(Redis 的连接password) 3. 要勾选上Use SSL Protocol 选项&#xff0c; 4. 连接到redis上&#xff0c;展示不同的database&#xff0c;…

cad标注尺寸很简单,这三个方法很好掌握!

在CAD&#xff08;计算机辅助设计&#xff09;的广阔领域中&#xff0c;标注尺寸是至关重要的一环。无论是初入CAD领域的新手&#xff0c;还是经验丰富的设计师&#xff0c;掌握标注尺寸的技巧都是提升工作效率和准确性的关键。今天&#xff0c;我们就来分享三个简单而实用的方…

AIGC数字人视频生成解决方案,赋能广电电视内容生产

AI数字人可以有效加大人工智能在内容生产的应用&#xff0c;推动广电电视节目创意生产&#xff0c;提高生产效率的同时&#xff0c;还能提升节目质量&#xff0c;增强互动呈现&#xff0c;为观众提供更加精彩的视听产品。 广州虚拟动力作为3D、AI数字人技术服务商及方案提供商…

5款非常好用的小众软件,你值得拥有

​ 今天为大家推荐五款不常见但好用的win10软件&#xff0c;它们都有着各自的特色和优势&#xff0c;相信你会喜欢的。 1. 文件夹查看——Folder Size View ​ Folder Size View是一款高效的文件夹大小查看工具&#xff0c;它能够快速扫描并展示文件夹及其子文件夹的占用空间…

np.array()按权重求平均值详解

代码如下&#xff1a; a np.array([[1, 4, 2, 6],[10, 41, 7, 3],[9, 1, 6, 2]]) v1 np.average(a, weights[3, 3, 4], axis0) print(v1) 运行结果 当执行这段代码时&#xff0c;np.average(a, weights[3, 3, 4], axis0)会根据指定的权重在列方向上计算加权平均值。 具体计…

告别枯燥:Python数据处理也可以很有趣

想要成为数据处理的超级英雄吗&#xff1f;阿佑将带你一探究竟&#xff01;我们将深入数据村&#xff0c;学习如何使用Python的超能力处理各种复杂的数据格式。从解码错误和字符集问题的解决&#xff0c;到大数据量的性能优化&#xff0c;再到数据验证与清洗&#xff0c;每一个…

git clone 项目报“鉴权失败”的解决办法

#问题展示# git clone https://gitee.com/soaringsoft/.....git 正克隆到...... Username for https://gitee.com:...... Password for https://.....gitee.com:...... remote: [session-1440f183] Unauthorized fatal: git clone https://gitee.com/soaringsoft/.....gi…

SpringMVC框架学习笔记(七):处理 json 和 HttpMessageConverter 以及文件的下载和上传

1 处理 JSON-ResponseBody 说明: 项目开发中&#xff0c;我们往往需要服务器返回的数据格式是按照 json 来返回的 下面通过一个案例来演示SpringMVC 是如何处理的 &#xff08;1&#xff09; 在web/WEB-INF/lib 目录下引入处理 json 需要的 jar 包&#xff0c;注意 spring5.x…

推荐网站(22)GeoSpy,根据图片显示地理位置

今天推荐一款名为GeoSpy的AI工具。它利用人工智能技术&#xff0c;通过分析照片中的光线、植被、建筑风格等细节线索&#xff0c;实现对拍摄地点的精确定位。令人难以置信的是,它对位置的定位准确度非常高。 GeoSpy之所以智能如此,是因为它将输入的照片与大量的街景和地理图像…

夹层辊能否解决智能测径仪量程不足的问题?

关键字:智能测径仪,测径仪夹层辊,测径仪量程,夹层辊作用,测径仪量程不足, 智能测径仪是一种高精度的测量设备&#xff0c;主要用于检测线材、管材等圆柱形物体的直径尺寸。在测径仪中&#xff0c;夹层辊是测径仪的关键部件之一&#xff0c;它负责引导和支撑被测物体&#xff0c…

Astar路径规划算法复现-python实现

# -*- coding: utf-8 -*- """ Created on Fri May 24 09:04:23 2024"""import os import sys import math import heapq import matplotlib.pyplot as plt import time 传统A*算法 class Astar:AStar set the cost heuristics as the priorityA…

企业里面最常用的6大管理系统!附6个模板下载!

企业管理系统旨在帮助企业优化工作流程&#xff0c;提高工作效率的信息化系统。它通过对一些流程的规范&#xff0c;可以极大地减少企业存在的一些流程重复造成的浪费&#xff0c;并通过规范每个员工的动作来提高效率。企业在选择管理系统时&#xff0c;注重功能的全面性、流程…

CentOS7下快速升级至OpenSSH9.7p2安全版本

一、CentOS7服务器上编译生成OpenSSH9.3p2的RPM包 1、编译打包的shell脚本来源于该项目 https://github.com/boypt/openssh-rpms解压zip项目包 unzip openssh-rpms-main.zip -d /opt cd /opt/openssh-rpms-main/ vim pullsrc.sh 修改第23行为source ./version.env 2、sh pull…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(三十一)- 微服务(11)

12.7 DSL查询语法 查询的基本语法 GET /indexName/_search{"query": {"查询类型": {"查询条件": "条件值"}}} 查询所有 GET /hotel/_search{"query": {"match_all": {}}} 12.7.1 全文检索查询 全文检索查询,会…