2014-04-06 100 views
1

我是JS新手,試圖獲得它,所以當有人在字段中輸入SSN號碼時,會給他們一個警告,告訴他們不要在其中放置SSN號碼。無法獲得JavaScript SSN表單驗證才能正常工作

HTML:

<form name="card" action="#"> 
    <input type="text" name="field" class="name social" size="60" placeholder="First and Last Name"> 
    <input type="text" name="field" class="phone social" size="60" placeholder="Phone Number"> 
    <input type="text" name="field" class="email social" size="60" placeholder="Email([email protected])"> 

    <select class="select"> 
     <option value="My card has not yet arrived">My card has not yet arrived 
     <option value="Direct Deposit">Direct Deposit 
     <option value="Suggest a Card">Suggest a Card 
     <option value="Issues with CARD.com">Issues with CARD.com 
     <option value="Other">Other 
    </select> 

    <textarea name="field" class="text social " cols="60" rows="5" placeholder="How can we help you?"></textarea> 
    <input type"submit" name="submit" class="subBtn" value="Submit" onclick="warnCC(document.card.field)">Submit</input> 
</form> 

JS:

<script> 
    function warnCC() 
    { 

     var ssn = document.getElementsByTagName("input"); 
     // document.getElementsByClassName("social"); 
     var pattern = /^[0-9]{3}\-?[0-9]{2}\-?[0-9]{4}$/; 
     if (ssn.value.match(pattern)) 
     { 
     return true; 
     alert("Please Do Not Enter SSN Info Into This Form"); 

     } 
     else 
     { 
     return false; 
     alert("yay!") 
     } 
    } 
</script> 

在哪裏我凸輪走錯了任何幫助將是非常有益的。如果任何人都可以給我建議,我寧願它是在「onfocusout」上完成。

+2

返回true _before_警報行可能會導致看到警報時出現問題。 –

+0

您是否看到錯誤?這對帖子有幫助,或者至少不是你期望的行爲。 –

回答

3

getElementsByTagNamegetElementsByClassName都返回一個列表的元素。該列表沒有value屬性。 的每個項目列表中有一個value屬性,但不包含列表。

你會通過輸入列表要循環和處理他們每個人酌情地例如:

var list = /*...get the list using either method you have in your code...*/; 
var index, input; 
for (index = 0; index < list.length; ++index) { 
    input = list[index]; 
    // input.value will be the value of this particular input 
} 

旁註:querySelectorAllgetElementsByClassName更好的支持(IE8有它,例如,但不getElementsByClassName),所以如果你想使用一個類來獲得一個列表,你最好搭配:

var list = document.querySelectorAll(".the-class-here"); 
0

你也應該做的警報()的函數返回之前...如果你想要的要顯示alert()對話框。

0

我調整了你的功能。您可以在此處看到它不作爲:http://jsfiddle.net/tBqP2

function warnCC() { 

     var formElements = document.getElementsByTagName("input"); 
     for (var k in formElements) { 
      // document.getElementsByClassName("social"); 
      var pattern = /^[0-9]{3}\-?[0-9]{2}\-?[0-9]{4}$/; 
      if (formElements[k].value.match(pattern)) { 
       alert("Please Do Not Enter SSN Info Into This Form"); 
       return false; 
      } 

     } 
     return true; 
    }