2012-07-05 77 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/