我希望按钮上有其他文字,直到验证进度。 但.innerHTML不会改变HTML。
var keeybtn = document.getElementById('kyloginbtn');
function checkForm() {
keeybtn.innerHTML = 'Go';
var email = document.getElementById("kymail").value;
if (email === '') {
keeybtn.innerHTML='Fill Email field';
message();
return false;
}
else {
document.getElementById("kyloginform").submit();
validate(email);
}
}

当我注释掉"验证(电子邮件)"它起作用。
function validate(email) {
var xmlhttp;
if (window.XMLHttpRequest)
{// for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState != 4 && xmlhttp.status == 200) {
keeybtn.innerHTML = "Validating..";
}
else if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
keeybtn.innerHTML = xmlhttp.responseText;
if(xmlhttp.responseText == "ok") {
reloadPage();
}
else {
message();
}
}
else {
console.log("Error");
}
}
xmlhttp.open("GET", "pk-login.php?email=" + email, false);
xmlhttp.send();
}

如果一切都有效,xmlhttp.Text会出现在按钮上。
答案 0 :(得分:0)
您可以通过以下示例实现此目的:
<form id="kyloginform" action="#" method="post">
<input type="text" id="kymail" value="" />
<button type="submit" id="kyloginbtn" onclick="return checkForm()">Submit</button>
</form>
function checkForm() {
var button = document.getElementById('kyloginbtn');
button.innerHTML = 'Submitting';
var email = document.getElementById("kymail").value;
if (email === '') {
button.innerHTML = 'Please fill in email field';
message();
// Prevent form submit when validation error.
return false;
}
else {
document.getElementById("kyloginform").submit();
validate(email);
}
}
有关工作示例,请参阅此小提琴http://jsfiddle.net/zeskysee/n7tevL7y/16/
希望这有帮助:)
答案 1 :(得分:0)
找到解决方案,ajax调用必须设置为async
xmlhttp.open("GET", "pk-login.php?email=" + email, true);