2012-07-14 23 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