-1

我想防止根据 AJAX 响应提交主表单。

HTML是这样的...

<form action="test.php" method="POST">
   <input type="text" name="email" id="email" onblur="ajax_check_email();">
   <span id="email_alert"></span>
    <input type="submit" name="submit">
</form>

现在我有一个带有ajax查询的js文件-

function ajax_email_check () {
    var xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("email_alert").innerHTML=xmlhttp.responseText;
        }
      }
    var email = document.getElementById("email").value;
    xmlhttp.open("GET","ajax/check_email.php?email=" + email,true);
    xmlhttp.send();
}

现在 php 页面返回Email Already ExistsSuccess.

一切顺利,但在显示“电子邮件已经存在......!”的文本之后 当我点击提交时,主表单正在提交。它应该阻止我。但是我要怎么做呢?

4

3 回答 3

1

抓住事件并停止它。

<form id="myform" action="test.php" method="POST">
<script>
$('form#myform').submit(function(e){
    e.preventDefault();
});
</script>
于 2013-09-14T21:21:57.547 回答
1

您可以简单地var shouldSubmit = false在您的ajax响应中添加一个标志,如果可以提交,更改shouldSubmittrue,然后添加一个事件监听器以形成

<script>
    yourform.addEventListener("submit", function(e){
    if(!shouldSubmit){
        e.preventDefault();
        return false;
       }
    });
</script>
于 2013-09-14T21:22:18.563 回答
0

只需将其添加到表单标签中 onsubmit="return false;"

像这样-

<form action="test.php" method="POST" onsubmit="return false;">
<input type="text" name="email" id="email" onblur="ajax_check_email();">
<span id="email_alert"></span>
<input type="submit" name="submit">
</form>
于 2013-09-14T21:20:54.167 回答