gpt4 book ai didi

javascript - Jquery 自定义日期验证器只工作一次

转载 作者:行者123 更新时间:2023-11-29 14:46:32 25 4
gpt4 key购买 nike

我在尝试向 jQuery.validator 添加自定义验证方法时遇到问题:

$.validator.addMethod("fromDate", function (value, element) {
var fromDateTime = moment(value, 'm/dd/yyyy HH:mm');
var toDateTime = moment($("#endDate").val(), 'm/dd/yyyy HH:mm');
if (fromDateTime.isValid() && toDateTime.isValid()) {
return toDateTime.diff(fromDateTime) > 0;
}

return false;
}, "Start datetime should be less than end datetime");

$('#queryingDateForm').on('submit', function (e) {
e.preventDefault();
$('#queryingDateForm').validate({
rules: {
start: {
required: true,
fromDate: true
}
},
submitHandler: function (form) {
load();
}
});
});

这行代码只在第一次正确运行,所以验证只运行一次。

return toDateTime.diff(fromDateTime) > 0;

第二次等它返回第一次返回的值。

HTML:

<form id="queryingDateForm">
<div class="input-group input-daterange">
<input class="form-control dateTimePicker" id="startDate" type="datetime" placeholder="Date Start" name="start" required />
<span class="input-group-addon">@QueryingResources.To</span>
<input class="form-control dateTimePicker" id="endDate" type="datetime" placeholder="Date End" name="end" required />

<div class="input-group-btn">
<button type="submit" class="btn btn-success searchQuery" id="searchDateBtn">@QueryingResources.Search</button>
</div>
</div>
</form>

这就是 Bootstrap 日期时间选择器的初始化方式:

$(".dateTimePicker").datetimepicker({
autoclose: true,
format: 'm/dd/yyyy hh:ii'
});

提前致谢

最佳答案

.validate() 方法仅用于初始化插件。

使用下面的版本,在验证插件初始化之前,表单已经在提交过程中。

$('#queryingDateForm').on('submit', function (e) {
e.preventDefault();
$('#queryingDateForm').validate({ ....
  • 如何在提交事件开始后进行验证?

  • 如何在不先初始化插件的情况下进行验证?

您永远不会将 .validate() 方法放在 submit 事件(或 click 事件)处理程序中。


该插件已经自动捕获点击并阻止表单提交。它只是在 DOM 就绪事件处理程序中的页面加载时被调用...

$(document).ready(function () {

$.validator.addMethod("fromDate", function (value, element) {
// your function
....
});

$('#queryingDateForm').validate({ // initialize the plugin
// your options
....
});

});

关于javascript - Jquery 自定义日期验证器只工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32010798/

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