Javascript未验证表单中的密码
您好,我在网上四处看看,我知道有人问过类似的问题,但是,我无法找到解决我问题的合适方法。我需要对这段代码进行密码验证,问题是我没有直接使用Javascript未验证表单中的密码,javascript,html,ruby-on-rails,validation,Javascript,Html,Ruby On Rails,Validation,您好,我在网上四处看看,我知道有人问过类似的问题,但是,我无法找到解决我问题的合适方法。我需要对这段代码进行密码验证,问题是我没有直接使用字段,因此我无法理解如何实现JS 这是HTML(它是使用RubyonRails实现的,这是我所能看到的所有“HTML”方面(下面是fiddle中的完整代码)) 联系方式 密码长度必须至少为6个字符,并且应包含小写字母、大写字母和数字的混合体。确认密码必须与密码匹配。 密码 确认密码 出生日期 我曾尝试实现一些JS(但由于不熟悉该语言,我无法使其正常工作,
字段,因此我无法理解如何实现JS
这是HTML(它是使用RubyonRails实现的,这是我所能看到的所有“HTML”方面(下面是fiddle中的完整代码))
联系方式
密码长度必须至少为6个字符,并且应包含小写字母、大写字母和数字的混合体。
确认密码必须与密码匹配。
密码
确认密码
出生日期
我曾尝试实现一些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>
函数validate_form()
{
var passw=document.getElementById('password1')。值;
if(passw.value.length<6){
警报(“错误:密码必须至少包含六个字符!”);
form.password.focus();
返回false;
}
返回true;
}
所以我希望如果它是空的,如果它小于6个字符,如果它不包含大写字母和数字,它会验证并引发一条消息。虽然我知道我在代码中没有引入后者,但我甚至无法获得
更新:
password1
是
id不是密码字段的id我刚刚检查了你的链接,它给出了错误
passw在控制台中未定义
,你的密码字段id是password-input-0
,所以使用
var passw = document.getElementById('password-input-0').value;
不要使用if(passw.value.length<6)
使用if(passw.length<6)
您已经有了密码值,只需检查大小即可。
此外,您的文本字段名称错误。“Password1”是td名称而不是密码文本字段。请检查并更正。
如果(passw.length<5)//这里应该是5
if(passw.length < 5 ) //here should be 5
当您单击按钮时,页面将刷新:您不需要调用
e.preventDefault();
我认为您应该侦听“提交”事件。在“侦听”功能中,您可以验证输入的长度并阻止其默认行为。我刚刚在live网站上尝试过它(目前已禁用所有其他验证)它什么也没做。我已经键入了你的修复程序,当我单击“注册”时,页面会刷新,但没有验证?你介意看一看吗?如果没有,你还有其他想法吗?谢谢,你怎么知道这是字段的名称?如果我想检查密码是否与第二个密码框匹配,因为两个字段似乎都称为password,第二个密码是:password-input-1
?非常感谢,我想我几乎可以解决这个问题,你真的保存了我的###!是的password-input-1
第二个密码,我用firebug检查了你的dom。再次感谢你(我只是想确保它在我接受之前工作正常:).我欠你一品脱最好的麦酒!再次谢谢你,先生!我刚刚在live网站上试用过(目前已禁用所有其他验证)它什么也没做。我已经键入了你的修复程序,当我单击“注册”时,页面会刷新,但没有验证?你介意看一看吗?如果没有,你还有其他想法吗?谢谢你的文本字段名称是错误的。“Password1”是td名称而不是密码文本字段。请检查并更正。谢谢回复。从我看到的情况来看,文本字段I但是我是否需要将js函数改为document.getElemenetByName而不是按Id?我刚刚尝试过,并将其上载到live dchost,文本字段为“password”,但仍然没有luckUse document.getElementById('password').value;Firefox中的inspect当我可以让它工作时,我会记住这一点!…我已经尝试在live网站上应用此修复程序(如下所述)(目前已禁用所有其他验证)它什么也没做。当我单击“注册”时,页面会刷新,但没有验证?你介意看一看吗?如果不介意,你还有其他想法吗?谢谢
^.*(?=.{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;
}
}
var passw = document.getElementById('password1').value;
var passw = document.getElementById('password-input-0').value;
if(passw.length < 5 ) //here should be 5
^.*(?=.{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;
}
}