2013-03-20 95 views
0

我一直在嘗試製作一個驗證電話號碼和姓名的表單,但是無論何時輸入提交,它都會輸入相同的消息,而不管這些字段是否填寫完整。消息不斷出現,我無法弄清楚表單驗證對於電話號碼/名稱不起作用

ETA:http://jsfiddle.net/6W3uU/

<body> 
<form id="contact"> 
<fieldset id="contactInformation"> 
<legend>Contact Information</legend> 
<p id="error"></p> 
<label id="name">Name:</label> 
<br> 
<input type="text"> 
<br> 
<br> 
<label id="phoneNumber">Phone Number:</label> 
<br> 
<input type="text"> 
<br> 
<br> 
<label id="eMail">E-Mail Address:</label> 
<br> 
<input type="text"> 
<br> 
<br> 
<label id="address">Address:</label> 
<br> 
<input type="text"> 
<br> 
<br> 
<label id="city">City:</label> 
<br> 
<input type="text"> 
<br> 
<br> 
<label id="postalCode">Postal Code:</label> 
<br> 
<input type="text"> 
<br> 
<br> 
<label id="province">Province</label> 
<br> 
<select id="province"> 
<option id="choose">Choose Your Province</option> 
<option id="alberta">Alberta</option> 
<option id="britishColumbia">British Columbia</option> 
<option id="manitoba">Manitoba</option> 
<option id="newBrunswick">New Brunswick</option> 
<option id="newfoundland">Newfoundland and Labrador</option> 
<option id="northwestTerritories">Northwest Territories</option> 
<option id="noviaScotia">Nova Scotia</option> 
<option id="nunavut">Nunavut</option> 
<option id="ontario">Ontario</option> 
<option id="pei">Prince Edward Island</option> 
<option id="quebec">Quebec</option> 
<option id="saskatchewan">Saskatchewan</option> 
<option id="yukon">Yukon Territory</option> 
<br> 
<br> 
<br> 
<label id="shippingCheckbox">Is your shipping information the same as your contact information? 
<input type="radio" id="sameInfo"> 
<label> 
Yes it is 
</label> 
<br> 
<br> 
<input type="radio" id="notSameInfo"> 
<label> 
No it is not 
</label> 
<br> 
<br> 
<input type="submit" id="submit" name="submit" value="Submit"> 
</form> 
<br> 
<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script src="js/script.js"></script> 
</body> 
</html> 

這裏是腳本:

//script.js 
var errorNotify = 'Sorry, we could not process your request because ' 
var errorField = []; 

function formVal() { 
    var isValid = true; 

    for (var i = 0; i < errorField.length; i++) { 
     $(errorField[i]).removeClass('error'); 
    } 
    errorField = []; 

    if(!nameCheck()) { 
     isValid = false; 
    } 
    if(!phoneCheck()) { 
     isValid = false; 
    } 
    if (isValid === false) { 
     $('#error').html(errorNotify).hide().slideDown('slow'); 
     for (var i = 0; i < errorField.length; i++) { 
      $(errorField[i]).addClass('error'); 
     } 
     errorNotify = 'Sorry, we could not process your request because '; 
    } 

    function nameCheck(){ 
     if ($('#name').val() === '') { 
      errorNotify += ' you did not enter your name.'; 
      errorField.push($('#name')); 
      return false; 
     } else { 
      return true; 
     } 
    } 
    function phoneCheck(){ 
     var phoneCheck = $('#phoneNumber').val(); 
     if (phoneCheck === '') { 
      errorNotify += ' you did not enter your phone number.'; 
      errorField.push($('#phoneNumber')); 
      return false; 
     } else if (phoneCheck.length !== 10) { 
      errorNotify += 'please enter a 10 digit phone number'; 
      errorField.push($('#phoneNumber')); 
     } 
     else if (isNaN(parseInt(phoneCheck))) { 
      errorNotify += 'you have entered a letter, please enter a number'; 
      errorField.push($('#phoneNumber')); 
     } 
     else { 
      return true; 
     } 
    } 
    return isValid; 
} 
$(function() { 
    $('#contact').submit(function() { 
     return formVal(); 
    }); 
}); 
+0

順便說一句,除非你這樣做是對的鍛鍊,這是非常值得使用jQuery驗證插件:http://docs.jquery.com/Plugins/Validation – dnagirl 2013-03-20 20:06:43

+0

你的語法, '

回答

0

你必須在標籤上標記你的ID,而不是輸入字段,改變

<label id="name">Name:</label> 
<br> 
<input type="text"> 

<label for="name">Name:</label> 
<br> 
<input id="name" type="text">