2012-07-14 56 views
0

我試圖通過調用一個php文件來合併一個函數中的所有驗證值。它設法驗證,但如果我驗證一個字段,另一個字段消息也會出來。多個值的表單驗證

形式:

<input name="SNo" type="text" id="SNo" onkeyup="Validate(this.value)" value=""/> <span id="validateNumbers"></span> 
<input name="Names" type="text" id="Names" onkeyup="Validate(this.value)" value=""/><span id="validateNames"></span> 

JavaScript函數:

function Validate(value) { 
    var SNo = document.getElementById('SNo').value; 
    var Names = document.getElementById('Names').value; 
    if (str == SNo) { 
     if (str.length == 0) { 
      document.getElementById("validateNumbers").innerHTML = "Must not be blank"; 
      return; 
     } 
     if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("validateNumbers").innerHTML = xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET", "functions/validate.php?SNo=" + str, true); 
    xmlhttp.send(); 
} else if (str == Names) { 
    //same coding as if statement 
} else {} 
} 

所以,如果我留空,將出現兩個validateNumbers和validateNames錯誤信息以及其他信息。我沒有使用任何循環,但爲什麼它會重複.. 請指教。

回答

1

str未定義。最好傳入輸入對象本身。

function Validate(field) { 
    var SNo = document.getElementById('SNo'); 
    var Names = document.getElementById('Names'); 

    if (field == SNo) { 
     if (field.value.length == 0) { 
      document.getElementById("validateNumbers").innerHTML = "Must not be blank"; 
      return; 
     } 
     if (window.XMLHttpRequest) { 
      xmlhttp = new XMLHttpRequest(); 
     } else { // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("validateNumbers").innerHTML = xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open("GET", "functions/validate.php?SNo=" + field.value, true); 
     xmlhttp.send(); 

    } else if (field == Names) { 
     //same coding as if statement 
    } else {} 
} 

<input name="SNo" type="text" id="SNo" onkeyup="Validate(this)" value=""/> 
<input name="Names" type="text" id="Names" onkeyup="Validate(this)" value=""/> 
+0

喜,它在輸入的onkeyup =驗證(THIS.VALUE) – JLearner 2012-07-14 15:41:42

+0

是已定義的,但你從來沒有在您的驗證功能 – Reimeus 2012-07-14 15:44:13

+0

我沒有使用變量「價值」。它可以驗證。它只是同時出現validateNumbers和ValidateNames的消息... – JLearner 2012-07-14 15:46:43