天天看點

Vue+element日期範圍選擇控件,隻能選擇30天

Vue+element日期範圍選擇控件,隻能選擇30天

Vue+element日期範圍選擇控件,隻能選擇30天

代碼

<!DOCTYPE html>
<html >

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" target="_blank" rel="external nofollow" >
</head>

<body>
    <div id="app">
        <el-date-picker v-model="dateRange" :picker-options="pickerOptions" type="daterange" range-separator="至"
            start-placeholder="開始日期" end-placeholder="結束日期">
        </el-date-picker>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <script>
        var vm = new Vue({
            el: "#app",
            data: function () {
                return {
                    pickerMinDate: '',
                    dateRange: [],
                    pickerOptions: {
                        onPick: ({ maxDate, minDate }) => {
                            this.pickerMinDate = minDate.getTime()
                            if (maxDate) {
                                this.pickerMinDate = ''
                            }
                        },
                        disabledDate: (time) => {
                            if (this.pickerMinDate !== '') {
                                const day30 = (30 - 1) * 24 * 3600 * 1000
                                let maxTime = this.pickerMinDate + day30
                                if (maxTime > new Date()) {
                                    maxTime = new Date()
                                    return time.getTime() > maxTime || time.getTime() < this.pickerMinDate - day30
                                } else {
                                    return maxTime < time.getTime() || time.getTime() < this.pickerMinDate - day30
                                }
                            }
                            return time.getTime() > Date.now()
                        }
                    }
                }
            }
        })
    </script>
</body>
</html>