StartDateとendDateに2つの日付ピッカーがあります。 startDate Pickerで、endDateより前のすべての日付を無効にしたい。その逆も同様です。 elemnt-uiを使用して日付を無効にする方法。 >>
これは古い質問ですが、今日も同じように自問しました。これは、disabledDate
ピッカーオプションを使用して実現できます。将来のすべての日付を無効にする方法の例を次に示します。
<el-date-picker
:picker-options="datePickerOptions"
</el-date-picker>
次に、データオブジェクトで:
data () {
return {
datePickerOptions: {
disabledDate (date) {
return date > new Date()
}
}
}
}
何よりもまず、終了日入力のピッカーオプションを定義する必要があります。主な問題は、ピッカーオプションのdisabledDateメソッド内でthisキーワードを使用することです。したがって、メソッドをdata定義の外のmethods部分に正確に移動する必要があります。したがって、完全なコードは次のようになります。
data () {
return {
task: {
start_at: new Date(),
end_at: new Date()
}
dueDatePickerOptions: {
disabledDate: this.disabledDueDate
}
}
},
methods: {
disabledDueDate (time) {
return time.getTime() < this.task.start_at
},
validateEndDate () {
if (this.task.start_at > this.task.due_at) {
this.task.due_at = this.task.start_at
}
}
}
そして[〜#〜] html [〜#〜]この例の一部は次のようになります。
<el-date-picker @input="validateEndDate" v-model="task.start_at" type="date"></el-date-picker>
<el-date-picker v-model="task.end_at" :picker-options="dueDatePickerOptions" type="date"></el-date-picker>
通知: validateEndDateメソッドはstartDateを変更した後にトリガーされ、startDateの前にendDateがあるかどうかを確認してから、endDateが等しくなるように修正します。
より簡単な解決策は、最小/最大値を動的に制限することです。私はこれを提案します:
<input type="date" class="form-control" v-model="dateFrom" :max="dateTo">
<input type="date" class="form-control" v-model="dateTo" :min="dateFrom">
これにより、日付ピッカーが適切な日付範囲に制限されます。