2

我有一个自定义日期选择器 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');
                }
            }
        });

当用户输入有效日期时,我可以看到正在输出到控制台的跟踪显示“日期有效”,但由于某种原因,表单没有被提交。

这里发生了什么事?

4

1 回答 1

-1

尝试

return true 

在这种情况下,

console.log //returns undefined. 

此外,在某些浏览器中,表单提交事件中的 preventDefault 存在错误,因此您可能需要更改

e.preventDefault() 

return false;
于 2012-07-04T09:33:38.613 回答