如何确定 Kendo Angular DatePicker 上的最终 ValueChange 事件
How do I determine final ValueChange event on Kendo Angular DatePicker
我需要为 Kendo Angular DatePicker 设置最小和最大日期。使用 [(max)]="maxDate" and [(min)]="minDate"
非常简单,这在使用鼠标并单击 DatePicker 时有效。
问题是当使用键盘输入时,用户可以 select 在最小和最大日期之外的日期。我有一个 valueChange 事件,但它会在每次击键时触发。我无法确定用户何时完成输入整个日期,然后根据需要简单地将日期设置为最小或最大。我可以为下一个控件设置一个 onFocus 事件,但那会很笨拙。
这是 html 代码的片段:
<kendo-datepicker
id="dpFirstPaymentDate"
(valueChange)="onFirstPaymentDateChange($event)"
[(value)]="firstPaymentDate"
[(max)]="maxDate"
[(min)]="minDate"
[(focusedDate)]="firstPaymentDate"
[rangeValidation] = "true"
title="First Payment Date">
</kendo-datepicker>
angular代码是这样的:
protected onFirstPaymentDateChange(/*event: EventEmitter*/ value: Date): void {
if (value > this.maxDate) {
// This does not appear to be working
value = new Date(this.maxDate);
this.firstPaymentDate = new Date(this.maxDate);
}
else if (value < this.minDate) {
value = new Date(this.minDate);
this.firstPaymentDate = new Date(this.minDate);
}
this.maturityDate = new Date(value);
this.maturityDate.setMonth(value.getMonth() + this.term);
}
这里是一个完整的 plunker 示例:Plunker example
好的,因为我的评论实际上是正确的,所以实际上我们应该使用 on blur 事件而不是使用 onchange 事件
<kendo-datepicker
id="dpFirstPaymentDate"
(blur)="onFirstPaymentDateChange($event)"
[(value)]="firstPaymentDate"
[(max)]="maxDate"
[(min)]="minDate"
[(focusedDate)]="firstPaymentDate"
[rangeValidation] = "true"
title="First Payment Date">
</kendo-datepicker>
onFirstPaymentDateChange 函数稍作更改,因为我们没有获取日期值,可能只是用 this.firstPaymentDate
获取它,我们可以继续设置逻辑(最大值)。这是 plnkr
中的工作示例
我需要为 Kendo Angular DatePicker 设置最小和最大日期。使用 [(max)]="maxDate" and [(min)]="minDate"
非常简单,这在使用鼠标并单击 DatePicker 时有效。
问题是当使用键盘输入时,用户可以 select 在最小和最大日期之外的日期。我有一个 valueChange 事件,但它会在每次击键时触发。我无法确定用户何时完成输入整个日期,然后根据需要简单地将日期设置为最小或最大。我可以为下一个控件设置一个 onFocus 事件,但那会很笨拙。
这是 html 代码的片段:
<kendo-datepicker
id="dpFirstPaymentDate"
(valueChange)="onFirstPaymentDateChange($event)"
[(value)]="firstPaymentDate"
[(max)]="maxDate"
[(min)]="minDate"
[(focusedDate)]="firstPaymentDate"
[rangeValidation] = "true"
title="First Payment Date">
</kendo-datepicker>
angular代码是这样的:
protected onFirstPaymentDateChange(/*event: EventEmitter*/ value: Date): void {
if (value > this.maxDate) {
// This does not appear to be working
value = new Date(this.maxDate);
this.firstPaymentDate = new Date(this.maxDate);
}
else if (value < this.minDate) {
value = new Date(this.minDate);
this.firstPaymentDate = new Date(this.minDate);
}
this.maturityDate = new Date(value);
this.maturityDate.setMonth(value.getMonth() + this.term);
}
这里是一个完整的 plunker 示例:Plunker example
好的,因为我的评论实际上是正确的,所以实际上我们应该使用 on blur 事件而不是使用 onchange 事件
<kendo-datepicker
id="dpFirstPaymentDate"
(blur)="onFirstPaymentDateChange($event)"
[(value)]="firstPaymentDate"
[(max)]="maxDate"
[(min)]="minDate"
[(focusedDate)]="firstPaymentDate"
[rangeValidation] = "true"
title="First Payment Date">
</kendo-datepicker>
onFirstPaymentDateChange 函数稍作更改,因为我们没有获取日期值,可能只是用 this.firstPaymentDate
获取它,我们可以继续设置逻辑(最大值)。这是 plnkr