Javascript未在表单中验证密码

时间:2014-06-04 09:36:10

标签: javascript html ruby-on-rails validation

您好我在网上浏览了一下,我知道已经提出了类似的问题,但是,我无法找到合适的解决方案来解决我的问题。我需要对此代码进行密码验证,问题是我没有直接使用<input>字段,因此我无法弄清楚如何实现JS。

这是HTML(它是使用ruby-on-rails实现的,这是我可以看到的所有&#39; 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>

所以我希望它验证并提出一条消息,如果它是空白的,如果它的&lt; 6个字符,如果它不包括大写和数字。虽然我知道我还没有在代码中引入后者,但我甚至无法使用&lt; 6来工作。

此外,我还有其他验证(默认情况下构建的验证工作),您可以看到完整的验证:

Fiddle code

Live Website

4 个答案:

答案 0 :(得分:1)

if(passw.value.length < 6 ) {

应该是

if(passw.length < 6 ) {

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

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

更新:

password1 <td> ID不是密码字段
我只是检查了您的链接,它提供了错误passw is undefined in console,您的密码字段ID为password-input-0,因此请使用

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

答案 1 :(得分:0)

您需要检查大小,而不是使用if(passw.value.length < 6 )使用if(passw.length < 6 )您已经拥有密码值。 此外,您的文本域名称是错误的。 &#39;密码1&#39;是td名称而不是密码文本字段。请检查并纠正。

答案 2 :(得分:0)

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

点击按钮时页面会刷新:您不要拨打e.preventDefault();我认为您应该倾听并提交&#39;事件。在&#39; listen&#39;功能您可以验证输入的长度并防止它的默认行为。

答案 3 :(得分:0)

^.*(?=.{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;
    }
}