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