首页 > 解决方案 > 页面提交状态不会改变

问题描述

我有这样的表格:

function nametst(str) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("namevalidity").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("POST", "nametst.php?=namerequest" + str, true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send();
    
}

function mailtst(str) {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("mailvalidity").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("POST", "mailtst.php?=mailrequest" + str, true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send();
    
}


function submittst(){
    nametst(document.getElementsByName('name')[0].value);
    mailtst(document.getElementsByName('email')[0].value);
    return xls;
    }
    
   var xls;
function submittes(callback){
    httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200){
                 callback(httpRequest.responseText);
                
            
        }
    };
    httpRequest.open('POST', "submitform.php", true);
    httpRequest.send();
}
submittes(function (result) {
    if (result === "yes"){
        xls = true;
        document.getElementById("submitanswer").innerHTML = "true";
    }
    else{
        xls = false;
        document.getElementById("submitanswer").innerHTML = "false";
    }
});
<form method="POST" onsubmit= "return submittst();" action = "welcome.html">  
      Name: <input type="text" name="name" onblur="nametst(value)">
       <span id="namevalidity"></span> </p>
       email: <input type="text" name="email" onblur="mailtst(value)">
       <span id="mailvalidity"></span> </p>
       
    <input type="submit" value="submit">
    <p> form validity: <span id="submitanswer"></span> </p>
如果名称和电子邮件有效,则 submitform.php 返回“是”。

当我输入错误的姓名或电子邮件时,会出现错误。到目前为止,一切都很好。但是表单的有效性总是假的,即使我点击“提交”按钮也不会改变。当我为名称和电子邮件设置默认值并且它们有效时,表单有效性保持为真。

为什么会这样?
我该如何解决?

标签: javascripthtmlxmlforms

解决方案


所以,我知道问题出在回调方法上。由于我的问题没有答案,我将使用没有这些回调的同步模式。


推荐阅读