ElementUI日期时间选择器组件在移动端点击input框弹出虚拟键盘

问题描述:

在移动端使用时,点击如下图所示三个输入框会弹出虚拟键盘。
在这里插入图片描述

解决方法一:

使用ElementUI官方文档提供的方法, 在el-date-picker属性中添加:editable=“false” 此方法只能使 input1 框阻止输入法弹出 , 无法阻止点击内部两个input框时输入法弹出。
在这里插入图片描述

				<el-date-picker
                    value-format="yyyy-MM-dd HH:mm:ss"
                    v-model="value"
                    type="datetime"
                    placeholder="请选择"
                    align="right"
                    :picker-options="pickerOptions"
                    style="width: 100%"
                    :editable="false"
                 ></el-date-picker>

解决方法二:

使用document.activeElement.blur()方法 , 去掉input框获得的焦点 在el-date-picker属性中添加@focus = ‘forbid’。

				<el-date-picker
                    value-format="yyyy-MM-dd HH:mm:ss"
                    v-model="value"
                    type="datetime"
                    placeholder="请选择"
                    align="right"
                    :picker-options="pickerOptions"
                    style="width: 100%"
                    :editable="false"
                    @focus="forbid"
                 ></el-date-picker>
使用JS
	// 判断时间是否符合yyyy-MM-dd HH:mm:ss
    isValidDateTime(dateTime) {
      const regex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/;
      return regex.test(dateTime);
    },
    // 判断时间是否符合yyyy-MM-dd
    isValidDate(dateString) {
      var regex = /^\d{4}-\d{2}-\d{2}$/;
      return regex.test(dateString);
    },
    // 判断时间是否符合HH:mm:ss
    isValidTimeFormat(timeStr) {
      var regex = /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/;
      return regex.test(timeStr);
    },
	forbid() {
       this.$nextTick(() => {
        //等待日期组件被渲染
        let inputTime = document.querySelectorAll(".el-input__inner");
        //获取input框的dom节点
        inputTime.forEach((item) => {
          // 时间组件输入框不弹出
          // 根据item.value判断是否为时间选择器的输入框
          if (
            (this.isValidDateTime(item.value) && item.type == "text") ||
            (this.isValidDate(item.value) && item.type == "text") ||
            (this.isValidTimeFormat(item.value) && item.type == "text")
          ) {
            item.addEventListener("focus", () => {
              document.activeElement.blur();
              //监听 当input框获取焦点时,去掉input框获得的焦点,阻止输入法弹出
            });
          }
        });
      });
    },
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值