2016-01-03 207 views
-1

我在我的index.htm返回false不工作AJAX

<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

@PatrickEvans:'return false'方面是一個紅色的鯡魚。真正的問題是錯誤的塊正在運行(末尾的'else'塊,而不是其中一個條件塊)。 –

+0

我想顯示用戶是否有錯誤,而他/她類型 – Eminem

+0

哦,是啊忘了他們正在嘗試做一個AJAX請求,從不知道 –

回答

0

if(3>str.length>0) 

複合範圍比較不JavaScript的工作,或者大多數(但不是全部!)其他語言,其語法的B派生(C,C++,C#,d,Java和JavaScript的,等等。)。

相反,你必須單獨列出兩個比較:

if (3 > str.length && str.length > 0) 
+0

但它顯示錯誤。 – Eminem

0

除了@ TJCrowder的答案,裏面的東西可能更重要:

return false;正去onkeyup事件input元素,而不是submit事件的form

事實上,沒有什麼企圖阻止表單提交。

+0

但是我怎樣才能把這個函數形式 – Eminem

+1

老實說,只是做''會比所有的JavaScript更好。 –

+0

用戶可以很容易地從開發工具改變它。 – Eminem