Vue2及以下使用elementUI的DatePicker在移动端弹起输入框的问题

本文介绍了如何在Vue2的Element UI DatePicker组件中避免在移动端弹起输入框的问题,通过修改组件属性和添加自定义事件处理,实现在聚焦时自动隐藏输入框。解决方案包括设置`editable`为`false`,并在组件创建时添加焦点事件监听,利用Vue的微任务和宏任务特性来确保DOM操作的正确执行。
摘要由CSDN通过智能技术生成

Vue2及以下DatePicker在移动端弹起输入框的问题

解决办法

main.js

import ElementUI from 'element-ui';
ElementUI.DatePicker.props.editable = false
Vue.use(ElementUI)
ElementUI.DatePicker._Ctor["0"].options.created.push(function () {
    this.$on("focus", () => {
        if (this["init" + this._uid]) {
            return
        }
        this["init" + this._uid] = true
        
        // 由于Vue的渲染默认是在微队列执行的
        // 而setTimeout属于宏队列,且延迟了100ms,所以可以获取到dom元素
        setTimeout(() => {
            const inputs = $(".el-input--small > .el-input__inner[type='text']")
            if (inputs && inputs.length) {
                inputs.each((idx, item) => {
                    if (item.bound) {
                        return
                    }
                    item.bound = true
                    item.addEventListener("focus", (ev) => {
                        ev.target.blur()
                    })
                })
            }
        }, 100)
    })
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值