JavaScript表单返回,但无法正常工作


javascript form return but not working properly

 function validateForm() {
    if ($('#date').val() == "") {
        $('#date').css("border","1px solid #FF0000");
        $('#date').focus();
        return false;
    }
    else if ($('#time').val() == "") {
        $('#time').css("border","1px solid #FF0000");
        $('#time').focus();
        return false
    }
    else if ($('#date').val() != "" && $('#time').val() != "") {
        var send = $.post("appointment.php",{
            package     : $('#package').val(),
            first_name  : $('#first_name').val(),
            last_name   : $('#last_name').val(),
            tel         : $('#tel').val(),
            email       : $('#email').val(),
            date        : $('#date').val(),
            time        : $('#time').val(),
        });
        send.success(function (result) {
            if (result == 'TRUE') {
                return true;
            }
            else if (result == 'FALSE') {
                return false;
            }
        });
        send.error(function () {
            alert("ajax error");
            return false;
        });
    }
    else {
        return true;
    }
}
<form name="step2" id="step2" action="./step3.php" onSubmit="return validateForm();" method="post">
...
</form>

即使所有内容都返回 false;仍然继续步骤 3.php 页面。我尝试了很多次,结果是一样的。

我的约会.php只返回回显"真"或"假"。

知道我的编码出了什么问题吗?

谢谢。

此问题是因为validateForm在返回之前不会等待异步调用 ( $.post ( 完成。

实现所需目标的一种方法是始终return false . 然后在成功时,手动提交,这不会调用 onSubmit 函数。

function validateForm() {
  if ($('#date').val() == "") {
    $('#date').css("border", "1px solid #FF0000");
    $('#date').focus();
  } else if ($('#time').val() == "") {
    $('#time').css("border", "1px solid #FF0000");
    $('#time').focus();
  } else {
    var send = $.post("appointment.php", {
      package: $('#package').val(),
      first_name: $('#first_name').val(),
      last_name: $('#last_name').val(),
      tel: $('#tel').val(),
      email: $('#email').val(),
      date: $('#date').val(),
      time: $('#time').val(),
    });
    send.success(function(result) {
      if (result == 'TRUE') {
        $('#step2').get(0).submit();
      }
    });
  }
  return false;
}