您好我在网上浏览了一下,我知道已经提出了类似的问题,但是,我无法找到合适的解决方案来解决我的问题。我需要对此代码进行密码验证,问题是我没有直接使用<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来工作。
此外,我还有其他验证(默认情况下构建的验证工作),您可以看到完整的验证:
答案 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;
}
}