我有以下jQuery定制验证方法:

$('#save-event-challenge').off('click').on('click', function (e) {
        let $btn = $(e.target);

        jQuery.validator.addMethod('minTime', function () {
            console.log('kjbkhb');

            let startTimeStamp = new Date($('#challenge_start_date').val() + ' ' + $('#challenge_start_time').val());
            let endTimeStamp = new Date ( $('#challenge_end_date').val() + ' ' + $('#challenge_end_time').val());
            console.log(startTimeStamp.getTime() < endTimeStamp.getTime());
            console.log(startTimeStamp);
            console.log(endTimeStamp);
            return startTimeStamp.getTime() < endTimeStamp.getTime();
        }, 'End Time Should be Greater Than or Equal to Start Time');

        $formChallenge.validate({
            rules: {
                challenge_end_date : {
                    minTime: true,
                },
                challenge_end_time : {
                    minTime: true,
                },
            }
        });

除非我让日期输入为空,否则不会输入addmethod(‘kjbkhb’,不会出现在控制台中).因此,我必须首先在日期输入为空的情况下提交,验证错误会出现,如果我完成了它们,但我让结束时间小于开始时间,错误就会出现.但如果我首先完成所有内容并提交,而时间不正确,则不会进行验证.

推荐答案

在触发验证之前需要对其进行配置.

在您的代码中,需要移动验证器设置

jQuery.validator.addMethod('minTime',...

在触发保存点击之前-理想情况下是在文档准备就绪内

按照原样,根据提供的代码缩进,您只需添加您(在单击处理程序期间)单击的验证器方法after,因此在第一次运行验证时(当您单击时,在单击处理程序之前),验证不存在--但当您第二次单击时,它就在那里了.因此,第一次(当不为空时)它通过,因为只有[必需的]验证.

Jquery相关问答推荐

使用带有 bootstrap 验证的 Ajax 函数时出现问题

将元素附加到每个函数 jQuery

如何像这样通过 $.ajax ( serialize() + extra data ) 添加数据

[本机代码]是什么意思?

如何判断是否有任何 JavaScript 事件侦听器/处理程序附加到元素/文档?

jQuery 库中使用的设计模式

使用 bootstrap-datepicker 检测对选定日期的更改

以ajax方式在rails 3中提交表单(使用jQuery)

如何使用 jQuery go 除 HTML 标签?

找到下一个匹配的sibling 姐妹的有效,简洁的方法?

jQuery绑定到粘贴事件,如何获取粘贴的内容

Ajax 更新后在 jQuery 中重新绑定事件(更新面板)

确定 JavaScript 值是否为整数?

谷歌图表重绘/zoom 窗口调整大小

将字符串true和false转为布尔值

消除移动 Safari 中点击事件的 300 毫秒延迟

Url.Action 在我的 url 中放了一个 &,我该如何解决这个问题?

你会如何比较 jQuery 对象?

如何使用 jQuery 处理复选框的更改?

jQuery:通过 .attr() 添加两个属性;方法