前端 element-ui el-date-picker日期选择器限制只能选择当月时间,禁止跨月功能

 实现效果:

 代码实现:

<el-date-picker
    v-model="searchParam.dateRange"
	type="daterange"
	:start-placeholder="开始时间"
	:end-placeholder="结束时间"
	range-separator="-"
	format="YYYY/MM/DD"
	value-format="YYYY-MM-DD"
	:disabled-date="disabledDate"
	@change="handleChange"
	@calendar-change="changeDate"
></el-date-picker>
<script setup>
import moment from 'moment';
const searchParam = () => ({
	startOn: '',       // 开始时间
	endOn: '',         // 结束时间
	dateRange: ''      //时间范围
});

// 选择日期范围后触发
const handleChange = () => {
	if ( !searchParam.dateRange ) {
		searchParam.startOn = '';
		searchParam.endOn = '';
	}
};
// 日历所选的日期更改时触发
const changeDate = ( value ) => {
	searchParam.startOn = moment( value[ 0 ]).format( 'YYYY-MM-DD' );
	searchParam.endOn = value[ 1 ] ? moment( value[ 1 ]).format( 'YYYY-MM-DD' ) : '';
};
// 禁用选择的日期
const disabledDate = computed(() => ( time ) => {
	// 当前时间前一个月
	const beforeMonth = moment().subtract( 1, 'months' ).
		subtract( 1, 'days' );
	if ( searchParam.endOn ) {
		return time.getTime() < beforeMonth || time.getTime() > moment();
	}
	if ( searchParam.startOn ) {
		// 本月的开始时间
		const startDate = moment( searchParam.startOn ).startOf( 'month' ).
			valueOf();
		// 本月的结束时间
		const endDate = moment( searchParam.startOn ).endOf( 'month' ).
			valueOf();
		
		return time.getTime() < startDate || time.getTime() > endDate || time.getTime() < beforeMonth;
	}
	return time.getTime() < beforeMonth || time.getTime() > moment();
});
</script>

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值