为什么javascript会传递未经验证的信息

为什么javascript会传递未经验证的信息,javascript,forms,validation,Javascript,Forms,Validation,我有以下两个datetimepicker函数/字段: $(function() { $('#updateJobForm').validate(); var startDateTime = $('#startTime'); var endDateTime = $('#endTime'); var currentDate = new Date(); var orginalDate = startDat

我有以下两个datetimepicker函数/字段:

    $(function() 
    {
        $('#updateJobForm').validate();
        var startDateTime = $('#startTime');
        var endDateTime = $('#endTime');
        var currentDate = new Date();
        var orginalDate =  startDateTime.val();

        startDateTime.datetimepicker(
            {
                timeFormat: "hh:mm tt",
                minDate: ("setDate", '',new Date()),
                hourGrid: 12,
                minuteGrid: 15,
                stepMinute: 15,
                onClose: function(dateText, inst) 
                {
                    if (endDateTime.val() != '') 
                    {
                        var testStartTime = startDateTime.datetimepicker('getDate');
                        var testEndTime = endDateTime.datetimepicker('getDate');
                        if (testStartTime > testEndTime)
                        {
                            alert("The start time cannot be greater than the end time.");
                            //startDateTime.val(currentDate.format("m/d/yyyy hh:mm tt"));
                        }
                    }
                    else 
                    {
                        endDateTime.val(dateText);
                    }
                },
                onSelect: function (selectedDateTime)
                    {
                        var testStartTime = startDateTime.datetimepicker('getDate');
                        var testEndTime = endDateTime.datetimepicker('getDate');
                        //if(endDateTime.val() == '')
                        //{
                            endDateTime.datetimepicker('option', 'minDate', startDateTime.datetimepicker('getDate'));
                    }
                }
            );
            endDateTime.datetimepicker(
                {
                    minDate: ("setDate", '',new Date()),
                    timeFormat: "hh:mm tt",
                    hourGrid: 12,
                    minuteGrid: 15,
                    stepMinute: 15,
                    onClose: function(dateText, inst) 
                    {
                        if (startDateTime.val() != '') 
                        {
                            //var testStartTime = startDateTime.datetimepicker('getDate');
                            var testEndTime =  endDateTime.datetimepicker('getDate');
                            //if (testEndTime < testStartTime)
                            //{
                            //alert("The end date blah blah"); // and time must be greater than the start date and time");
                            //endDateTime.val(testStartTime.format("mm/dd/yyyy hh:MM"));
                            //}
                            //else
                            endDateTime.datetimepicker('setDate', testEndTime);
                        }
                        //else 
                        {
                        //  startDateTime.val(dateText);
                        }
                    },
                    onSelect: function (selectedDateTime)
                    {
                    startDateTime.datetimepicker('option', 'maxDate', endDateTime.datetimepicker('getDate') );
                    }
                }
            );
        }
    );
    function validate_form()
    {
        var sDate= new Date(document.updateJobForm.startTime.value);
        var eDate= new Date(document.updateJobForm.endTime.value);
        if ((document. updateJobForm.startTime.value != "") && (document. updateJobForm.endTime.value != "") && (sDate < eDate))

        {
            return true;
        }

        else

        {
            alert("Please choose a start date/time that begins before the end date/time");
            return false;
        }
    }
$(函数()
{
$('#updateJobForm').validate();
var startDateTime=$(“#startTime”);
var endDateTime=$(“#endTime”);
var currentDate=新日期();
var orginalDate=startDateTime.val();
startDateTime.datetimepicker(
{
时间格式:“hh:mm tt”,
minDate:(“设置日期”,“新日期()),
沙格里德:12,
分钟网格:15,
分钟:15,
onClose:函数(dateText,inst)
{
如果(endDateTime.val()!=“”)
{
var testStartTime=startDateTime.datetimepicker('getDate');
var testEndTime=endDateTime.datetimepicker('getDate');
如果(testStartTime>testEndTime)
{
警报(“开始时间不能大于结束时间”);
//startDateTime.val(currentDate.format(“m/d/yyyy hh:mm tt”);
}
}
其他的
{
endDateTime.val(日期文本);
}
},
onSelect:功能(selectedDateTime)
{
var testStartTime=startDateTime.datetimepicker('getDate');
var testEndTime=endDateTime.datetimepicker('getDate');
//如果(endDateTime.val()='')
//{
endDateTime.datetimepicker('option','minDate',startDateTime.datetimepicker('getDate');
}
}
);
endDateTime.datetimepicker(
{
minDate:(“设置日期”,“新日期()),
时间格式:“hh:mm tt”,
沙格里德:12,
分钟网格:15,
分钟:15,
onClose:函数(dateText,inst)
{
如果(startDateTime.val()!=“”)
{
//var testStartTime=startDateTime.datetimepicker('getDate');
var testEndTime=endDateTime.datetimepicker('getDate');
//如果(testEndTime
以及一个validate_form函数,该函数从my submit按钮调用,如下所示:

<td align="right"><input name="reset" type="reset" value="Reset" />
<input name="submit" type="submit" value="Update" onclick="validate_form()"/></td>
<td>&nbsp;</td>


单击提交按钮时(数据错误,即开始日期大于结束日期)我收到警告消息,告诉用户更正时间。在用户单击“确定”以发出警告后,表单会提交无效数据。函数看起来正确,逻辑似乎正常,但为什么在函数返回false后提交表单?更糟糕的是,如果数据正确,表单根本不会提交。这是什么出了问题,我该如何解决这个问题?

您的按钮中没有返回

onclick="return validate_form()"

您的验证功能应该放在表单本身的“onSubmit”事件上,而不是“submit”按钮的“onClick”事件上!这就是返回值阻止表单提交的地方!

谢谢您的正确回答。我是javascript新手,非常感谢您的帮助!