今天的JS今天与VUE的日期验证问题

发布于 2025-01-21 17:45:17 字数 1809 浏览 0 评论 0原文

在我的vuejs应用程序中,我有一个带有表格的组件。

以这种形式,我有一个字段来选择日期。

我的要求是显示出错误消息,如果所选日期大于当前日期。

基本上,选定的日期需要是今天的日期或将来的日期。

我正在使用Moment JS。

我在我的validator.vue中有遵循自定义规则

const dateIsToday = (value) => {
    var todayDate = moment(new Date()).format("DD-MM-YYYY");
    var selectedDate = value;
    return selectedDate>=todayDate;
};

,但是只有当我从本月中选择了旧日期...假设用户是否从本月选择了较早的日期,例如> 10-04-2022,然后将显示错误消息。

但是,如果用户选择上个月或过去一个月的旧日期,例如10-01-2022,这不会向我显示错误

消息

<div class="w-1/2 mr-2">
                        <p class="text-certstyle-titles font-bold text-sm mb-1">Start date</p>
                        <div class="h-12">
                            <cs-date-picker
                                id="startDate"
                                v-model="project.start_date"
                                :default-selection="true"
                                :name="`${identifier}-start_at`">
                            </cs-date-picker>
                            <validator
                                :identifier="`${identifier}-validate-project`"
                                :rules="validations.startDate"
                                :name="`${identifier}-start_at`"
                            />
                        </div>
                    </div>

。...在我的验证下,我有

startDate: {
                    required: {
                        message: 'Project Start date is required.'
                    },
                    dateIsToday: {
                        message: 'Date has to be today's date or a future date.'
                    },
                },

In my VueJS application I have a component with a form.

In that form I have a field to pick the date.

My requirement is to show an error message if the selected date is older than the current date.

Basically the selected date need to be either today's date or future date.

I'm using Moment JS.

I have following custom rule in my Validator.vue

const dateIsToday = (value) => {
    var todayDate = moment(new Date()).format("DD-MM-YYYY");
    var selectedDate = value;
    return selectedDate>=todayDate;
};

But this works only if I selected an old date from the current month... Assume if the user has picked an older date from this month like 10-04-2022, then it'll show the error message.

But if the user selected an old date from last month or a past month like 10-01-2022, this won't show me the error message....

In my form.vue I have

<div class="w-1/2 mr-2">
                        <p class="text-certstyle-titles font-bold text-sm mb-1">Start date</p>
                        <div class="h-12">
                            <cs-date-picker
                                id="startDate"
                                v-model="project.start_date"
                                :default-selection="true"
                                :name="`${identifier}-start_at`">
                            </cs-date-picker>
                            <validator
                                :identifier="`${identifier}-validate-project`"
                                :rules="validations.startDate"
                                :name="`${identifier}-start_at`"
                            />
                        </div>
                    </div>

And under my validations I have,

startDate: {
                    required: {
                        message: 'Project Start date is required.'
                    },
                    dateIsToday: {
                        message: 'Date has to be today's date or a future date.'
                    },
                },

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

糖果控 2025-01-28 17:45:17

看来您正在比较字符串。相反,您应该真正利用时刻并比较力矩日期:

const dateIsToday = (value) => {
    let todayDate = moment();
    let selectedDate = moment(value, "DD-MM-YYYY");
    return selectedDate.isSameOrAfter(todayDate);
};

It seems that you are comparing strings. Instead you should make real use of moment and compare moment dates:

const dateIsToday = (value) => {
    let todayDate = moment();
    let selectedDate = moment(value, "DD-MM-YYYY");
    return selectedDate.isSameOrAfter(todayDate);
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文