element ui的下拉框在ios移动端首次输入模糊查询不生效全局解决

element ui的下拉框在ios移动端首次输入模糊查询不生效全局解决

在 iOS 移动端上,当您第一次输入内容时,可能无法正确触发 Element UI 下拉框的模糊查询功能。这个问题可能是由于 iOS Safari 浏览器默认将表单元素设置为需要双击才能激活造成的。为了解决这个问题,您可以尝试以下几种方式:

  1. 修改 input 标签的属性
    在 HTML 中,您可以通过修改 input 标签的属性来禁用 iOS Safari 的默认行为。具体而言,您可以为 input 标签添加 onclick="this.focus()" 属性,以确保在单击输入框时立即获得焦点,从而避免双击才能激活的问题。

例如,如果您有一个下拉框组件如下所示:

<el-select v-model="value" placeholder="请选择">
  <el-option label="选项1" value="option1"></el-option>
  <el-option label="选项2" value="option2"></el-option>
</el-select>

那么您可以添加 onclick 属性并将其设置为 this.focus(),如下所示:

<el-select v-model="value" placeholder="请选择" onclick="this.focus()">
  <el-option label="选项1" value="option1"></el-option>
  <el-option label="选项2" value="option2"></el-option>
</el-select>
  1. 使用 fastclick 库
    另外,您还可以使用 FastClick 库来解决 iOS 移动端上的单击事件延迟问题。FastClick 是一个轻量级的库,可以在移动设备上消除浏览器 300ms 的点击延迟,并且还可以修复 iOS 上双击才能激活表单元素的问题。

要使用 FastClick,您需要将其引入到项目中,然后在 DOMContentLoaded 事件完成时调用 FastClick.attach() 方法即可。例如:

<script src="path/to/fastclick.js"></script>
<script>
  document.addEventListener('DOMContentLoaded', function() {
    FastClick.attach(document.body);
  }, false);
</script>

通过添加以上代码,您就可以解决 Element UI 下拉框在 iOS 移动端上首次输入模糊查询不生效的问题。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7633081
  • 你也可以参考下这篇文章:element ui实现下拉框远程搜索,请求后台获取数据并展示下拉内容
  • 除此之外, 这篇博客: element ui 时间选择器 选择开始时间 选择结束时间中的 element ui 时间选择器 开始时间 结束时间 限制 结束时间不能小于开始时间 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •       <div>
              <label for="sel1" class="inp">开始时间(UT):</label>
              <el-date-picker
                :editable="false"
                v-model="startBudgetTime"
                :picker-options="startDatePicker"
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                format="yyyy-MM-dd HH:mm:ss"
                placeholder="选择开始日期"
              />
            </div>
            <div>
              <label for="sel1" class="inp">结束时间(UT):</label>
              <el-date-picker
                :editable="false"
                v-model="endBudgetTime"
                :picker-options="endDatePicker"
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                format="yyyy-MM-dd HH:mm:ss"
                default-time="['23:59:59']"
                placeholder="选择结束日期"
              />
            </div>
    
    export default {
        name: "SpacePosition",
    	data() {
    	    return {
    	      startBudgetTime: "", // 预算开始时间
    	      endBudgetTime: "", // 预算结束时间
    	      startDatePicker: this.beginDate(),
    	      endDatePicker: this.processDate(),
    	      
    	    };
    	  },
      }
    
     methods: {
        beginDate() {
          const self = this;
          return {
            disabledDate(time) {
              if (self.endBudgetTime) {
                //如果结束时间不为空,则小于结束时间
                return new Date(self.endBudgetTime).getTime() < time.getTime();
              } else {
                // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天
              }
            }
          };
        },
        processDate() {
          const self = this;
          return {
            disabledDate(time) {
              if (self.startBudgetTime) {
                //如果开始时间不为空,则结束时间大于开始时间
                return new Date(self.startBudgetTime).getTime() > time.getTime();
              } else {
                // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天
              }
            }
          };
    },
    }
    
  • 您还可以看一下 陈健老师的element-ui实战教程课程中的 element-ui01介绍和项目初始化 qq交流群809182161小节, 巩固相关知识点