el-date-picker实现通过其他方式触发日期选择器

el-date-picker 目前只能通过点击input输入框触发日期选择器,项目中需要通过其他方式触发日期选择器同时把input输入框去掉,如点击另一个按钮事件 来触发日期选择器框展开。
在这里插入图片描述
该模块由于后端接口数据传输限制 在前面文章里做了些许改动。

需求左右切换 可以快速找到年份,于是添加了element选择年份的日期组件。
图中隐藏了el-data-picker日期组件,手动添加样式展示时间栏选择的数据进行 +0 回显。
点击时间时,让日期组件显示出来时存在一个问题 就是每次点击 需要点击两下才能完成年份的选择。
第一次是让组件显示
第二次点击是触发日期框选择器

于是查询了相关文档,可以通过focus来触发日期选择框。如下:
在这里插入图片描述

document.querySelector('.time-date-picker').querySelector('input').focus() 

第一种方式:给el-date-picker 一个类名 class=“time-date-picker”,找到类名下的input手动触发focus。

        <div class="date-result">
        //不让该组件显示 只用到日期框
          <el-date-picker
            class="time-date-picker"
            style="
              position: recative;
              z-index: -100;
              transform: scale(0.2) translate(-300px, 100px);
            "
            v-model="checkYear"
            :editable="false"
            type="year"
            placeholder="选择年份"
            @change="changeYear"
          >
          </el-date-picker>
          <div class="hiddenPicker">
            <span @click="checkPicker" style="cursor: pointer">
              <i class="el-icon-date"></i>{{ dataYear }}-{{ dateMonth }}</span
            >
            <span>消费成本:<i>628.736.91元</i></span>
            <span>应收账款:<i>976.381.30元</i></span>
          </div>
        </div>

<script>
export default{
	data(){
		return{
			checkYear:''
		}
	}
	methods:{
	 changeYear(checkYear) {
      if (checkYear !== null)
      this.dataYear = checkYear.toString().substr(11, 4);
      this.clcikMonth(this.dateMonth);
    },
	checkPicker() {
      	//触发日期框展开
      	document
        	.querySelector(".time-date-picker")
        	.querySelector("input")
        	.focus();
    	},
	}
}
</script>

第二种方式:给el-date-picker 绑定 ref=“元素”,通过this.$refs.“元素”.focus() 手动触发。

          <el-date-picker
            ref="datepicke"
            v-model="checkYear"
            :editable="false"
            type="year"
            placeholder="选择年份"
            @change="changeYear"
          >
          </el-date-picker>
		 <div class="hiddenPicker">
            <span @click="checkPicker" style="cursor: pointer">
            <i class="el-icon-date"></i>
            {{ dataYear }}-{{ dateMonth }}</span>
         </div>
         
 	checkPicker() {
      // document
      //   .querySelector(".time-date-picker")
      //   .querySelector("input")
      //   .focus();
      this.$refs.datepicke.focus();
    },
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-date-picker是一个日期选择器组件,无法直接实现模糊查询。如果你想要实现模糊查询,可以考虑使用el-input结合el-date-picker实现。具体步骤如下: 1.在el-form中添加el-input和el-date-picker组件,用于输入查询关键字和选择日期范围。 ```html <el-form> <el-form-item label="关键字"> <el-input v-model="keyword" placeholder="请输入关键字"></el-input> </el-form-item> <el-form-item label="日期"> <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> </el-form-item> </el-form> ``` 2.在el-form中添加一个查询按钮,用于触发查询操作。 ```html <el-form> <!-- 省略其他代码 --> <el-form-item> <el-button type="primary" @click="handleSearch">查询</el-button> </el-form-item> </el-form> ``` 3.在Vue实例中添加keyword和dateRange两个数据属性,并添加handleSearch方法用于处理查询操作。 ```javascript data() { return { keyword: '', dateRange: [] } }, methods: { handleSearch() { // 在这里处理查询操作,可以使用keyword和dateRange两个数据属性来获取用户输入的关键字和日期范围 } } ``` 4.在handleSearch方法中,可以将用户输入的关键字和日期范围作为参数,发送请求到后台进行模糊查询操作。 ```javascript methods: { handleSearch() { // 在这里处理查询操作 // 可以使用this.keyword和this.dateRange来获取用户输入的关键字和日期范围 axios.get('/api/search', { params: { keyword: this.keyword, startDate: this.dateRange[0], endDate: this.dateRange[1] } }).then(response => { // 处理查询结果 }).catch(error => { // 处理查询失败情况 }) } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值