2013-02-25 67 views
81

我用jQuery做了一個簡單的驗證表單。它工作正常。事情是我不滿意我的代碼。是否有另一種方法來編寫我的代碼具有相同的輸出結果?一個簡單的jQuery表單驗證腳本

$(document).ready(function(){ 

$('.submit').click(function(){ 
    validateForm(); 
}); 

function validateForm(){ 

    var nameReg = /^[A-Za-z]+$/; 
    var numberReg = /^[0-9]+$/; 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 

    var names = $('#nameInput').val(); 
    var company = $('#companyInput').val(); 
    var email = $('#emailInput').val(); 
    var telephone = $('#telInput').val(); 
    var message = $('#messageInput').val(); 

    var inputVal = new Array(names, company, email, telephone, message); 

    var inputMessage = new Array("name", "company", "email address", "telephone number", "message"); 

    $('.error').hide(); 

     if(inputVal[0] == ""){ 
      $('#nameLabel').after('<span class="error"> Please enter your ' + inputMessage[0] + '</span>'); 
     } 
     else if(!nameReg.test(names)){ 
      $('#nameLabel').after('<span class="error"> Letters only</span>'); 
     } 

     if(inputVal[1] == ""){ 
      $('#companyLabel').after('<span class="error"> Please enter your ' + inputMessage[1] + '</span>'); 
     } 

     if(inputVal[2] == ""){ 
      $('#emailLabel').after('<span class="error"> Please enter your ' + inputMessage[2] + '</span>'); 
     } 
     else if(!emailReg.test(email)){ 
      $('#emailLabel').after('<span class="error"> Please enter a valid email address</span>'); 
     } 

     if(inputVal[3] == ""){ 
      $('#telephoneLabel').after('<span class="error"> Please enter your ' + inputMessage[3] + '</span>'); 
     } 
     else if(!numberReg.test(telephone)){ 
      $('#telephoneLabel').after('<span class="error"> Numbers only</span>'); 
     } 

     if(inputVal[4] == ""){ 
      $('#messageLabel').after('<span class="error"> Please enter your ' + inputMessage[4] + '</span>'); 
     }  
} 

}); 
+3

是的,你可以使用jQuery驗證爲使腳本更好一些了。 – 2013-02-25 04:48:14

+0

你能告訴我如何?他們說寫代碼就像寫詩一樣。我希望優化我的代碼。 – jhedm 2013-02-25 04:52:55

+10

http://codereview.stackexchange.com/ - 這就是你要找的 – Alexander 2013-02-25 22:11:37

回答

249

您可以簡單地使用the jQuery Validate plugin如下更多的財產。

jQuery的

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     rules: { 
      field1: { 
       required: true, 
       email: true 
      }, 
      field2: { 
       required: true, 
       minlength: 5 
      } 
     } 
    }); 

}); 

HTML

<form id="myform"> 
    <input type="text" name="field1" /> 
    <input type="text" name="field2" /> 
    <input type="submit" /> 
</form> 

DEMO:http://jsfiddle.net/xs5vrrso/

選項:http://jqueryvalidation.org/validate

方法:http://jqueryvalidation.org/category/plugin/

標準規則http://jqueryvalidation.org/category/methods/

擇規則可與additional-methods.js file

maxWords 
minWords 
rangeWords 
letterswithbasicpunc 
alphanumeric 
lettersonly 
nowhitespace 
ziprange 
zipcodeUS 
integer 
vinUS 
dateITA 
dateNL 
time 
time12h 
phoneUS 
phoneUK 
mobileUK 
phonesUK 
postcodeUK 
strippedminlength 
email2 (optional TLD) 
url2 (optional TLD) 
creditcardtypes 
ipv4 
ipv6 
pattern 
require_from_group 
skip_or_fill_minimum 
accept 
extension 
13

你可以使用jQuery的驗證,但你需要添加jquery.validate.js和jquery.form.js文件爲。在包含驗證器文件後,定義您的驗證類似這樣的內容。

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#formID").validate({ 
    rules :{ 
     "data[User][name]" : { 
      required : true 
     } 
    }, 
    messages :{ 
     "data[User][name]" : { 
      required : 'Enter username' 
     } 
    } 
    }); 
}); 
</script> 

你可以看到required : true同樣有像電子郵件,您可以定義爲email : truenumber : true

+1

jQuery驗證器很好,但我認爲驗證器會考慮新的HTML5驗證功能,甚至更好。 http://ericleads.com/h5validate/。 – 2013-02-25 04:56:38

+0

@MattB。,從來沒有聽說過這個,但[jQuery驗證插件也考慮到HTML5功能](http://jsfiddle.net/vEhbH/),雖然我不知道爲什麼你需要/想要一起使用。 – Sparky 2013-02-25 17:07:00

+0

Devang,'jquery.form.js'不需要**來使用你顯示的代碼。 – Sparky 2013-02-25 17:14:20