gpt4 book ai didi

javascript - 如何阻止用户在 Angular 日期类型输入中输入 future 日期

转载 作者:行者123 更新时间:2023-12-02 22:55:37 25 4
gpt4 key购买 nike

我限制用户将来使用 html 5 日期选择器在输入中输入日期。但用户可以输入 future 的日期。如果用户不选择从日期选择器日历中选择日期值,是否有任何方法可以阻止用户输入 future 日期?

这是我的代码:

HTML

  <div class="col-sm-7">

<input type="date" class="form-control" [max]="maxDate" pattern="^(19[5-9][0-9]|20[0-4][0-9]|2050)[-/](0?[1-9]|1[0-2])[-/](0?[1-9]|[12][0-9]|3[01])$" name="Datebillabuse" [(ngModel)]="Datebillabuse" #date="ngModel" [ngClass]="{ 'is-invalid': f.submitted && date.invalid }" required />
<div *ngIf="f.submitted && date.invalid" class="invalid-feedback">
<div *ngIf="date.errors.required">Date is required</div>
<div *ngIf="date.errors.pattern">Please enter a valid date</div>
<div *ngIf='date.errors.max'>Date must not be in future</div>
</div>
</div>

typescript

  setTodayDate() {

const dtToday = new Date();
let month = String(dtToday.getMonth() + 1);
let day = String(dtToday.getDate());
let year = dtToday.getFullYear();


if (parseInt(month, 10) < 10) {
month = '0' + month.toString();
}
if (parseInt(day, 10) < 10) {
day = '0' + day.toString();
}

this.maxDate = `${year}-${month}-${day}`;

}

With calendar drop-down

Problem when user starts typing future dates

我想到的一个解决方案是检查日期值是否大于今天并显示错误。

Angular 中有没有更好的方法来解决这个问题?

最佳答案

当我们通过设置最大属性来限制用户时,html 输入类型日期元素存在问题,因为这不允许用户从日历下拉列表中选择日期,但用户仍然可以使用键盘输入不需要的值。这就是 hack,我曾经用来处理这个问题

  1. 声明一个 bool 值来检查日期是否无效。

    futureDateError: bool 值;

  2. 声明一个方法来检查输入日期是否有效。

    checkDateValidity(日期:字符串): bool 值{

        const mxDate = new Date(this.maxDate);
    const inputDate = new Date(date);

    if (inputDate > mxDate) {
    return this.futureDateError = true;
    }
    return this.futureDateError = false;

    }

  3. 将此方法与 (change) 事件绑定(bind)。

  4. 当日期无效且不提交表单时显示错误。

    日期不能是将来的日期

    if (this.checkDateValidity(this.Datebillabuse)) { 返回; }

关于javascript - 如何阻止用户在 Angular 日期类型输入中输入 future 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com