2013-02-25 34 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