2016-11-16 82 views
0

这很好,但我需要它做的也是忽略它,如果密码字段留空。Javascript密码验证跳过如果字段为空

我希望用户能够更新其信息而无需更改密码。所以如果他们将密码字段留空,他们的密码保持不变。

document.addEventListener("DOMContentLoaded", function() { 

    // JavaScript form validation 

    var checkPassword = function(str) 
    { 
     var re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$/; 
     return re.test(str); 
    }; 

    var checkForm = function(e) 
    { 

     if(this.pwd1.value != "" && this.pwd1.value == this.pwd2.value) { 
     if(!checkPassword(this.pwd1.value)) { 
      alert("The password you have entered is not valid!"); 
      this.pwd1.focus(); 
      e.preventDefault(); 
      return; 
     } 
     } else { 
     alert("Error: Please check that you've entered and confirmed your password!"); 
     this.pwd1.focus(); 
     e.preventDefault(); 
     return; 
     } 
    }; 

    var add_employee_form = document.getElementById("add_employee_form"); 
    add_employee_form.addEventListener("submit", checkForm, true); 

    // HTML5 form validation 

    var supports_input_validity = function() 
    { 
     var i = document.createElement("input"); 
     return "setCustomValidity" in i; 
    } 

    if(supports_input_validity()) { 


     var pwd1Input = document.getElementById("field_pwd1"); 
     var pwd1Rule = "Password must contain at least 6 characters, including UPPER/lowercase and numbers."; 
     pwd1Input.setCustomValidity(pwd1Rule); 

     var pwd2Input = document.getElementById("field_pwd2"); 
     var pwd2Rule = "Please enter the same Password as above."; 

     // input onchange event handlers 


     pwd1Input.addEventListener("change", function() { 
     this.setCustomValidity(this.validity.patternMismatch ? pwd1Rule : ""); 
     if(this.checkValidity()) { 
      pwd2Input.pattern = this.value; 
      pwd2Input.setCustomValidity(pwd2Rule); 
     } else { 
      pwd2Input.pattern = this.pattern; 
      pwd2Input.setCustomValidity(""); 
     } 
     }, false); 

     pwd2Input.addEventListener("change", function() { 
     this.setCustomValidity(this.validity.patternMismatch ? pwd2Rule : ""); 
     }, false); 

    } 

    }, false); 

</script>   

回答

1

更改功能在顶部有这样的:

if(!this.pwd1.value) return; 

的JavaScript将返回值错误的零或空白所以这回说:如果假的。

全功能:

var checkForm = function(e) 
    { 
     if(!this.pwd1.value) return; 
     if(this.pwd1.value != "" && this.pwd1.value == this.pwd2.value) { 
     if(!checkPassword(this.pwd1.value)) { 
      alert("The password you have entered is not valid!"); 
      this.pwd1.focus(); 
      e.preventDefault(); 
      return; 
     } 
     } else { 
     alert("Error: Please check that you've entered and confirmed your password!"); 
     this.pwd1.focus(); 
     e.preventDefault(); 
     return; 
     } 
    }; 
+0

到底在哪是 “功能的开始”。很明显,我知道几乎没有关于JavaScript。谢谢 – user3556177

+0

我编辑了我的答案以显示全部功能。 – racamp101

+0

谢谢你,但我仍然收到相同的错误信息。 pwd1文本错误。 pwd2文本错误。 – user3556177