[英]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.