返回false是不起作用的AJAX

时间:2016-01-03 14:36:38

标签: javascript ajax

我的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();
    }
}

但即使它出错,我仍然可以提交表格,即使有返回假。

2 个答案:

答案 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}}事件!

事实上,没有任何东西试图阻止表单提交。