方案:去除input框的readonly属性
<template #toolboxLeft>
<div class="select-flex">
<el-select
...
:ref="getDivDom"
data-id="workerNo"
@vnode-mounted="() => cancalReadOnly(false, 'workerNo')"
@visible-change="(onOff: boolean) => cancalReadOnly(onOff,'workerNo')"
>
<el-option
v-for="w in workerList"
:key="w.workerNo"
:label="w.cName"
:value="w"
/>
</el-select>
</div>
</template>
<script setup lang="ts">
import { nextTick } from "vue";
/** fix: iOS Element 当el-select 可输入时,ios端调不起键盘 */
const divDomList = ref(new Map());
const getDivDom = (el: any) => {
if (el) {
divDomList.value.set(el.$attrs["data-id"], el);
}
};
// 去除input框的readonly属性
function cancalReadOnly(onOff: boolean, keyName: string) {
nextTick(() => {
const select = divDomList.value.get(keyName);
console.log('select', select);
if (select) {
const input = select.$el.querySelector(".el-input__inner");
input.removeAttribute("readonly");
console.log(keyName, input);
}
});
}
<script setup lang="ts">