2012-07-05 86 views
0

我有以下的JavaScript代码工作:正则表达式JavaScript验证

<script> 
function validate(form) { 
    // Shortcut to save writing 
    var pwd = form.elements.lgps.value; 

    // Check length 
    if(8 > pwd.length || pwd.length > 16) 
     return false; 

    // Check for at least 1 lowercase letter 
    var rgx = /[a-zA-Z]+/; 
    if(!rgx.test(pwd)) 
     return false; 

    // Check for at least 1 digit 
    rgx = /\d+/; 
    if(!rgx.test(pwd)) 
     return false; 

    // Check for no spaces 
    rgx = /\s/; 
    if(rgx.test(pwd)) 
     return false; 

    return true; 
} 
</script> 

这是我的形式:

<form method="post" action="406.php" language="javascript" 
    name="myform" id="myform" onsubmit="return validate(this);"> 

我想,如果上述所有失败添加一个信息提示,还有我的表单中的另一个字段进行验证。所以基本上我有一个用户名字段和一个密码字段。 我希望密码字段长度在8到20个字符之间,并且至少包含1个数字。

+1

请注意格式帮助。 – Ryan 2012-07-05 16:47:14

+0

如果您可以将此版本转换为jsfiddle.net,那将有助于我们的帮助。 – hookedonwinter 2012-07-05 16:49:37

+0

jquery是你的选择吗? – Tom 2012-07-05 16:52:36

回答

0

这看起来不错,除了一个事实,大写和小写第一正则表达式的测试,只是括号的if语句和return语句前加上

alert('Password not right') 

..明明每次退货,您可以更改警报因此。

+0

这应该与out out说,但要确保你在你的php脚本中重新验证密码。我很容易发送一个帖子头到你的php脚本中,并且我想要任何值 – dano 2012-07-05 16:56:13

0
function validatePwd(form) { 
    var pwd = form.elements.lgps.value; 

    if(8 > pwd.length || pwd.length > 16){ 
     alert("Your password must be 8-16 characters in length"); 
     return false; 
    } 

    var rgx = /[a-zA-Z]+/; 
    if(!rgx.test(pwd)){ 
     alert("Your need at least 1 lowercase letter"); 
     return false; 
    } 

    rgx = /\d+/; 
    if(!rgx.test(pwd)){ 
     alert("You need at least 1 digit"); 
     return false; 
    } 

    rgx = /\s/; 
    if(rgx.test(pwd)){ 
     alert("You can't have spaces"); 
     return false; 
    } 

    return true; 
} 

function validateUnm(form){ 
    var unm = form.elements.lgem.value; 

    if(3 > unm.length || unm.length > 20){ 
     alert("Your username must be 3-20 characters in length"); 
     return false; 
    } 

    //and more conditions.... 

    return true; 
} 

你会被称之为:

<form onsubmit="validatePwd(this);validateUnm(this)"> 
+0

谢谢你的代码,但是当我添加这个时候什么也没有发生。我的意思是你可以提交表单空白。那是什么//在那里做东西的事情?我应该输入什么?谢谢 – 2012-07-05 17:07:18

+0

这就是你想要做的,如果密码是正确的。 – maxhud 2012-07-05 17:08:17

+0

很奇怪。添加此代码时,我可以提交表单。 – 2012-07-05 17:11:59

0

包括下面是利用jQuery和存储验证要求到名为testsobject的解决方案。

根据在每个属性中声明的测试检查所需元素提供的值,在这种情况下,输入的ID为pass。如果测试通过,那么该属性设置为1以指示true。如果测试失败,则将该属性设置为0以指示false

然后遍历该对象以检查哪些属性已通过,哪些失败。如果至少有一个测试失败,则使用消息来通知用户该无效标准。

HTML:

<input type="text" id="pass" /> 

的jQuery:

function validatePassword(pwd) { 
    var errors = []; 

    var tests = { 
     '- Min/Max Length of 8-16 characters': function(){ 
      return (pwd.length < 8 || pwd.length > 16 ? 0 : 1); 
     }(), 
     '- Contains Alpha-numeric characters': function(){ 
      rgx = /[a-zA-Z]+/; 
      return (!rgx.test(pwd) ? 0 : 1); 
     }(), 
     '- Contains 1 or more Digits': function(){ 
      rgx = /\d+/; 
      return (!rgx.test(pwd) ? 0 : 1); 
     }(), 
     '- Contains No Spaces': function(){ 
      rgx = /\s/; 
      return (rgx.test(pwd) ? 0 : 1); 
     }() 
    }; 

    for(result in tests){ 
     if(tests[result] == 0){ 
      errors.push(result); 
     } 
    } 

    if(errors.length > 0){ 
       alert('Please correct your password to meet the following criteria:\n' + errors.join('\n')); 
    } 
} 

$(function(){ 
    $('#pass').blur(function(){ 
     validatePassword($(this).val()); 
    }); 
}); 

演示:http://jsfiddle.net/Rmm6d/