我有一个自定义日期选择器jQuery插件。在表单提交时,日期选择器验证所选日期以检查它是否有效。如果不是,则显示错误消息,否则应继续并发布表单。
如果用户第一次输入有效日期,会发生一切正常。但是,如果用户输入无效日期,则会显示错误消息,然后当用户修复日期时,它仍然不会发布表单。它只是坐在那里。
以下是处理表单提交事件的代码部分:
var hiddenInput = $('.custom-date-picker-value');
var form = hiddenInput.closest('form');
$(form).submit(function (e) {
selectedMonth = monthSelect.find('option:selected').text();
selectedYear = yearSelect.find('option:selected').text();
selectedDay = daySelect.find('option:selected').text();
$('#dateValidationMessage').html('');
if (selectedMonth == '' || selectedDay == '' || selectedYear == '') {
$('#dateValidationMessage').html($('#dateOfBirthRequired').val());
e.preventDefault();
}
else {
var dateValue = selectedMonth + '/' + selectedDay + '/' + selectedYear;
var dob = new Date(dateValue);
var modifiedDate = new Date(dob.getFullYear() + 2, dob.getMonth(), dob.getDay());
if (modifiedDate > new Date()) {
$('#dateValidationMessage').html($('#AgeGreaterThan').val());
e.preventDefault();
}
else {
hiddenInput.val(dateValue);
console.log('date is valid');
}
}
});
当用户输入有效日期时,我可以看到一条跟踪输出到控制台说“日期有效”,但由于某种原因,表格没有提交。
这里发生了什么?
答案 0 :(得分:-1)
尝试
return true
在这种情况下,
console.log //returns undefined.
此外,某些浏览器中的表单提交事件中存在preventDefault错误,因此您可能需要更改
e.preventDefault()
到
return false;