Un simple script de validation de formulaire jQuery [fermé]

110

J'ai fait un simple formulaire de validation en utilisant jQuery. Cela fonctionne bien. Le fait est que je ne suis pas satisfait de mon code. Existe-t-il un autre moyen d'écrire mon code avec le même résultat de sortie?

$(document).ready(function(){

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

function validateForm(){

    var nameReg = /^[A-Za-z]+$/;
    var numberReg =  /^[0-9]+$/;
    var emailReg = /^([\w-\.]+@([\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>');
        }       
}   

});
jhedm
la source
3
oui, vous pouvez utiliser le script de validation jquery pour l'améliorer.
Devang Rathod
pouvez-vous me montrer comment? Ils disent qu'écrire un code, c'est comme écrire un poème. Je veux que mon code soit optimisé.
jhedm
10
codereview.stackexchange.com - c'est ce que vous recherchez
Alexander
1
Vous pouvez utiliser la validation du formulaire HTML5:$('form')[0].checkValidity()
niutech
si l'objectif principal est la simplicité, valijate jquery plugin est prometteur. c'est un plugin de démarrage. mais, il utilise un moyen intéressant de validation. voici le lien pour leur guide. valijate.com/Docs.php
bula

Réponses:

300

Vous pouvez simplement utiliser le plugin jQuery Validate comme suit.

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>

DÉMO: http://jsfiddle.net/xs5vrrso/

Options: http://jqueryvalidation.org/validate

Méthodes: http://jqueryvalidation.org/category/plugin/

Règles standard : http://jqueryvalidation.org/category/methods/

Règles optionnelles disponibles avec le additional-methods.jsfichier :

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
Sparky
la source
18

vous pouvez utiliser jquery validator pour cela mais vous devez ajouter le fichier jquery.validate.js et jquery.form.js pour cela. après avoir inclus le fichier de validation, définissez votre validation comme ceci.

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

Vous pouvez voir la required : true même chose, il y a beaucoup plus de propriétés comme pour l'email que vous pouvez définir email : true pour le nombre number : true

Devang Rathod
la source
3
jQuery validator est bon, mais je pense qu'un validateur qui prend en compte les nouvelles fonctionnalités de validation HTML5 est encore meilleur, par exemple ericleads.com/h5validate .
Matt Browne
@MattB., Jamais entendu parler de celui-là, mais le plugin jQuery Validate prend également en compte les fonctionnalités HTML5 , bien que je ne sache pas pourquoi vous auriez besoin / souhaitez utiliser les deux ensemble.
Sparky
1
Devang, jquery.form.jsn'est pas obligé d'utiliser le code que vous avez montré.
Sparky
@Sparky Sauf si vous avez déjà conçu une esthétique particulière que vous aimez vraiment pour les messages de validation, autoriser un navigateur prenant en charge HTML5 à afficher les messages de validation de la manière par défaut est souvent plus agréable, où le plugin de validation n'est utilisé que comme solution de secours pour afficher les messages d'erreur sur les navigateurs plus anciens, et pour la logique de validation HTML5 ne prend pas en charge (sans Javascript supplémentaire). Mais c'est autant ma préférence personnelle qu'autre chose.
Matt Browne
1
@MattB., Généralement, les utilisateurs de jQuery recherchent la cohérence entre les navigateurs que vous obtenez en vous éloignant des fonctionnalités du navigateur qui varient considérablement d'une marque à l'autre. Je préfère également m'en tenir aux plugins populaires qui ont une base de support énorme, et si le développeur fait également partie de l'équipe jQuery , tant mieux, IMO.
Sparky