el-select 在iOS手机上,无法唤起软键盘以及二次点击问题

这篇具有很好参考价值的文章主要介绍了el-select 在iOS手机上,无法唤起软键盘以及二次点击问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

element UI 中有一个el-select组件。我们经常用它来实现下拉框功能。 但是在手机上使用时,发现iOS手机上,该组件无法唤起软键盘。

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

方案

// 本案例只为处理兼容问题,不包含其他复杂逻辑
<template>
    <el-select
        ref="select"
        @focus="clear"
        @hook:mounted="clear"
        @visible-change="clear"
    >
    </el-select>
</template>
<script>
    export default {
        methods: {
            clear(async) {
                this.$nextTick(() => {
			        if (!async) {
			          // ios 手机有延迟问题
			          setTimeout(() => {
			            const { select } = this.$refs
			            const input = select.$el.querySelector('.el-input__inner')
			            input.removeAttribute('readonly')
			          }, 200)
			        }
			     })
            }
        }
    }
</script>

二次点击问题

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

完成以上操作就可以正常使用了。

clearable 清空问题

如果el-select 还增加了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(onOff) {
            	if (onOff) { // 打开下拉框 显示可清空按钮
					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>


这种办法

其实我个人觉得,在移动端也不太需要clearable功能,因此我做了一个判断。在移动端的情况下,clearable 值设为 false文章来源地址https://www.toymoban.com/news/detail-502685.html

 mounted () {
    if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { // 判断iPhone|iPad|iPod|iOS
      this.showClose = false
    }
  }

到了这里,关于el-select 在iOS手机上,无法唤起软键盘以及二次点击问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决element-ui中的el-select选择器无法显示选中内容的问题

    问题描述: 排查方法: 检查数据控制台是否报错,无报错 检查change是否触发,会触发 最后开始百度,查看文档  官方文档有这么一段话,就是属性一定要挂载到data上,不然无法检测。 最后解决: 排查到我的form表单,在定义表单属性的时候,没有在data中定义该字段。 总结

    2024年01月23日
    浏览(52)
  • 【已解决】element-ui组件嵌套太多层,导致内部el-input和el-select 等组件无法正常输入解决方案

    如果 element-ui 组件嵌套太多层,可能会导致内部的 el-input 和 el-select 等组件无法正常输入。 出现这种问题通常是由于 z-index 属性设置不正确导致的。 解决这个问题的方法是调整组件的 z-index 属性,使其不会被其他组件覆盖。以下是一个解决方法: 在上面的代码中,我们首先

    2023年04月13日
    浏览(53)
  • uniapp无法唤起相机的避坑之旅(安卓10以上,以及鸿蒙手机

    相机权限:都获取到了。 原因可能是安卓的原生问题,应该在安卓的manifest里添加provider provider android:name=“io.dcloud.common.util.DCloud_FileProvider” android:authorities=“${apk.applicationId}.dc.fileprovider” android:exported=“false” android:grantUriPermissions=“true” meta-data android:name=“android.support.

    2024年04月13日
    浏览(78)
  • VUE element-ui 使用Screefull 页面全屏时el-select下拉菜单不显示(下拉框不显示无法选择)问题解决

    问题原因:elemrnt-ui会默认将弹出框插入至 body 元素;当设置了某个元素全屏时,会遮挡住原来的select下拉数据。

    2024年02月14日
    浏览(60)
  • el-select 使用

    案例:

    2024年02月10日
    浏览(38)
  • 修改el-select和el-input样式;修改element-plus的下拉框el-select样式

    修改el-select样式 input如下 el-input clearable v-model=\\\"name\\\" placeholder=\\\"请输入\\\" class=\\\"input-with-select input_box\\\" style=\\\"width: 148px;margin: 0 40px;position: absolute;right:67px;\\\" /

    2024年02月13日
    浏览(48)
  • el-select报错:vue.esm.js?5cd5:5105 [Vue warn]: <transition-group> children must be keyed: <ElTag>;无法选中

    目录 一、问题 二、原因及解决方法 三、总结 Tips:嫌麻烦可以直接看总结中有颜色的字体即可! 1. 使用element select控件时有警告(transition-group children must be keyed: ElTag)且无法选中下拉项 vue.esm.js?5cd5:5105 [Vue warn]: transition-group children must be keyed: ElTag found in --- TransitionGroup        

    2024年02月14日
    浏览(44)
  • el-select修改样式

    el-select 准备  注:关键 :popper-append-to-body=\\\"false\\\" 修改placeholder颜色 Element-ui下如何修改input的placeholder的颜色_呆小九的博客-CSDN博客  修改右侧箭头 在element icon里检索 修改圆角边框 el-input

    2024年02月11日
    浏览(44)
  • el-select码值枚举

    当码值的数据是自己写的时候: 例如:isOrNo:[{label:\\\'是\\\',value:\\\'1\\\'},{label:\\\'否\\\',value:‘2’}], 当传给后端值时下拉选择是,值为1,我们当前拿到的只是值为value:1,label值为拿到,我们就需要把label值取到。 方法如下: 第一种方法: 第二种方法:

    2024年02月10日
    浏览(35)
  • el-select 分页加载

    针对数据量大的选择器,需要分页从后端接口获取数据,前端监听选择器下拉框的滚动事件,当往下滚动至底部一定位置时,调接口

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包