element-ui 的可搜索下拉框组件el-select 在移动端无法拉起输入法


问题主要是在IOS端,安卓可以正常拉起手机的输入法,
在IOS端会出现下图的情况,组件已经获取了焦点,下拉框也出现了,但是输入法没有出现。   

input有readonly属性,也不会弹出软键盘

看了一下el-select源码,实际上它内部是用一个计算属性去控制readonly属性,在下拉框展开的时候才会取消readonly,我猜也许是取消的速度比较慢,IOS在点击的时候还是检测到readonly的存在,因此键盘无法呼出。

<template>
    <el-select
        ref="select"
        @hook:mounted="cancalReadOnly"
        @visible-change="cancalReadOnly"
    >
        
    </el-select>
</template>

<script>
    export default {
        methods: {
            cancalReadOnly(onOff) {
                this.$nextTick(() => {
                    if (!onOff) {
                        const {select} = this.$refs;
                        const input = select.$el.querySelector('.el-input__inner');
                        input.removeAttribute('readonly');
                    }
                });
            }
        }
    }
</script>

粗暴的解决方案就是监听组件的事件,在组件mounted初始化和下拉框关闭的时候把readonly强制干掉


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM