2013-07-27 28 views
1

我正在创建一个表单来编辑也允许更改密码(如果由用户输入)的用户数据。我只是不知道如何使用jQuery验证来检查密码是否与密码确认匹配,当且仅当密码字段不为空时。如何仅在第一个不为空时比较字段

我已经通过stackoverflow搜索,发现了一些关于jQuery验证的skip_or_fill_minimum方法,但它不能正常工作,因为我需要。

你可以在http://jsfiddle.net/julianonunes/u6DK5/3/

$(function() { 
    $('#form').validate({ 
     debug: true, 
     rules: { 
      pwd: { 
       minlength: 5, 
       skip_or_fill_minimum: [2, ".pw"] 
      }, 
      confirmPwd: { 
       equalTo: '#NewPassword', 
       skip_or_fill_minimum: [2, ".pw"] 
      } 
     }, 
     messages: { 
      pwd: { 
       minlength: 'Password must have at least 5 characters' 
      }, 
      confirmPwd: {    
       equalTo: 'Password and confirmation do not match' 
      } 
     } 
    }); 
}); 

HTML检查样品:

<form id="form" method="post"> 
    <p> 
     <label for="pwd">Password:</label> 
     <input type="password" id="pwd" name="pwd" class="pw" /> 
    </p> 
    <p> 
     <label for="confirmPwd">Confirm:</label> 
     <input type="password" id="confirmPwd" name="confirmPwd" class="pw" /> 
    </p> 
    <input type="submit" /> 
</form> 

回答

1

你不需要skip_or_fill_minimum规则,也不需要创建一个自定义的方法。

当该字段不是required时,则可以将它们留空。只需在第二个字段使用equalTo将强制用户使其匹配。

  • 将第一个字段留空,然后第二个可以留空。
  • 把东西放在第一个领域,然后第二个必须匹配。

你的代码不能正常工作,因为你的equalTo规则设置匹配#NewPassword,但你没有在你的HTML的任何input元素与id="NewPassword"。将其更改为您尝试匹配的字段的id;在这种情况下,#pwd,它工作得很好。

工作DEMOhttp://jsfiddle.net/nMjAy/

$(function() { 
    $('#form').validate({ 
     rules: { 
      pwd: { 
       minlength: 5 
      }, 
      confirmPwd: { 
      // equalTo: '#NewPassword' // <-- no such ID in your HTML 
       equalTo: '#pwd'   
      } 
     }, 
     messages: { 
      pwd: { 
       minlength: 'Password must have at least {0} characters' 
      }, 
      confirmPwd: { 
       equalTo: 'Password and confirmation do not match' 
      } 
     } 
    }); 
}); 

HTML:

<form id="form" method="post"> 
    <p> 
     <label for="pwd">Password:</label> 
     <input type="password" id="pwd" name="pwd" class="pw" /> 
    </p> 
    <p> 
     <label for="confirmPwd">Confirm:</label> 
     <input type="password" id="confirmPwd" name="confirmPwd" class="pw" /> 
    </p> 
    <input type="submit" /> 
</form> 
+0

你说得对。谢谢。 –