我的index.htm
中有这个<form>
<input onkeyup="firstnamecheck(this.value)" type="text" name="firstname" id="Start" class="Inputs" />
<button type="submit" name="Murad" id="tester"title="Register" >Register</button>
</form>
这是在reg.js
function firstnamecheck(str) {
if (str.length == 0) {
document.getElementById("firster").innerHTML = "";
return false;
}else if(3>str.length>0){
document.getElementById("firster").innerHTML = "Firstname should be more than 3 charachters";
return false;
}else if(str.length>30){
document.getElementById("firster").innerHTML = "Firstname should be less than 30 charachters";
return false;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("firster").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("POST", "era.php?f=" + str, true);
xmlhttp.send();
}
}
但即使它出错,我仍然可以提交表格,即使有返回假。
答案 0 :(得分:0)
复合范围比较,如
if(3>str.length>0)
不适用于JavaScript,或大多数(但不是全部!)其他语言的语法派生自B(C,C ++,C#,D,Java,JavaScript等)。
相反,您必须单独列出两个比较:
if (3 > str.length && str.length > 0)
答案 1 :(得分:0)
除了@ TJCrowder的答案之外,还有一些可能更重要的事情:
您的return false;
将转到onkeyup
元素的input
事件,而不是submit
的{{1}}事件!
事实上,没有任何东西试图阻止表单提交。