繁体   English   中英

Javascript无法验证表单中的密码

[英]Javascript not validating password in Form

嗨,我在网上四处张望,我知道有人问过类似的问题,但是,我找不到适合我问题的解决方案。 我需要将此代码进行密码验证,问题是我没有直接使用<input>字段,因此无法弄清楚如何实现JS。

这是HTML(它是使用ruby-on-rails实现的,这是我可以看到的所有“ HTML”部分(完整的代码在下面的小提琴中))

<form accept-charset='utf-8' method='post' name="form" action='register'  class="registerform" onsubmit="return validate_form()">
<h3 class="registernospace">Contact Information</h3>
<table>
   <tbody>
      <tr><td class="registerrowspace" colspan="2">The Password must be at least 6 characters  long and should contain a mixture of lower case letters, upper case letters, and numbers.<br  />The Confirm Password must match the Password.</td></tr>
      <tr><th class="registerrowspace">Password</th><td id="password1" class="registerrowspace"><%= field('password') %></td></tr>
      <tr><th class="registerrowspace">Confirm Password</th><td id="password2" class="registerrowspace"><%= field('password') %></td></tr>
      <tr><th class="registerrowspace">Date of Birth</th><td class="registerrowspace">
   </tbody>
</table>

<% end %>
<input type='hidden' name='register_submitted' value='yes'/>
<p><input type='submit' class="button" value='Register Now' /></p>
</form>

而且我尝试实现一些JS(但是不熟悉该语言,但我无法使其正常运行,但是我正在尝试执行以下操作:

<script type="text/javascript">
  function validate_form()
  {
  var passw = document.getElementById('password1').value;
  if(passw.value.length < 6 ) {
    alert("Error: Password must contain at least six characters!");
    form.password.focus();
    return false;
  }
  return true;
  }
</script>

所以我希望它可以验证并引发一条消息,如果其空白,<6个字符且不包含大写字母和数字。 尽管我知道我没有在代码中引入后者,但是我什至无法使用<6进行工作。

另外,我还有其他验证(默认情况下是可以正常工作的),您可以看到完整的验证信息:

小提琴代码

实时网站

if(passw.value.length < 6 ) {

应该

if(passw.length < 6 ) {

因为你已经获得了它的价值

var passw = document.getElementById('password1').value;

更新:

password1<td> id而不是密码字段
我只是检查您的链接,它passw is undefined in console错误passw is undefined in console ,您的密码字段ID为password-input-0 ,所以使用

var passw = document.getElementById('password-input-0').value;

与使用if(passw.value.length < 6 )而不是使用if(passw.length < 6 )您已经具有密码值,您只需要检查大小即可。 另外,您的文本字段名称错误。 “ Password1”是td名称,而不是密码文本字段。 请检查并更正。

if(passw.length < 5 ) //here should be 5

单击按钮时页面刷新:您不调用e.preventDefault(); 我认为您应该听“提交”事件。 在“监听”功能中,您可以验证输入的长度并防止其为默认行为。

^.*(?=.{6,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$

---

^.*              : Start
(?=.{6,})        : Length
(?=.*[a-zA-Z])   : Letters
(?=.*\d)         : Digits
(?=.*[!#$%&? "]) : Special characters
.*$              : End



function validatePassword() {
    var newPassword = document.getElementById('changePasswordForm').newPassword.value;
    var regularExpression  = ^.*(?=.{6,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$/;
    alert(newPassword); 
    if(!regularExpression.test(newPassword)) {
        alert("password should contain atleast one number and one special character");
        return false;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM