Un semplice script di convalida del modulo jQuery [chiuso]


110

Ho creato un semplice modulo di convalida utilizzando jQuery. Funziona bene. Il fatto è che non sono soddisfatto del mio codice. C'è un altro modo per scrivere il mio codice con lo stesso risultato di output?

$(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>');
        }       
}   

});

3
sì, puoi usare lo script di convalida jquery per renderlo migliore.
Devang Rathod

puoi mostrarmi come? Dicono che scrivere un codice sia come scrivere una poesia. Voglio che il mio codice sia ottimizzato.
jhedm

10
codereview.stackexchange.com - è quello che stai cercando
Alexander

1
Puoi utilizzare la convalida del modulo HTML5:$('form')[0].checkValidity()
niutech

se l'obiettivo principale è la semplicità, il plugin valijate jquery è promettente. è un plugin di avvio. ma utilizza un modo interessante di convalida. ecco il link per la guida. valijate.com/Docs.php
bula

Risposte:


300

Puoi semplicemente utilizzare il plugin jQuery Validate come segue.

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/

Opzioni: http://jqueryvalidation.org/validate

Metodi: http://jqueryvalidation.org/category/plugin/

Regole standard : http://jqueryvalidation.org/category/methods/

Regole opzionali disponibili con il additional-methods.jsfile :

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

18

puoi usare jquery validator per questo, ma devi aggiungere jquery.validate.js e jquery.form.js file per quello. dopo aver incluso il file del validatore, definisci la tua validazione in questo modo.

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

Puoi vedere che required : true ci sono molte altre proprietà come per le email che puoi definire email : true per numero number : true


3
Il validatore jQuery è buono, ma penso che un validatore che prende in considerazione le nuove funzionalità di convalida HTML5 sia ancora migliore, ad esempio ericleads.com/h5validate .
Matt Browne

@ MattB., Non ne ho mai sentito parlare, ma il plug-in jQuery Validate tiene conto anche delle funzionalità HTML5 , anche se non sono sicuro del motivo per cui avresti bisogno / vorresti usarle entrambe insieme.
Sparky

1
Devang, nonjquery.form.js è necessario utilizzare il codice che hai mostrato.
Sparky

@Sparky A meno che tu non abbia già un'estetica particolare che ti piace molto per i messaggi di convalida, consentire a un browser che supporta HTML5 di visualizzare i messaggi di convalida nel modo predefinito è spesso più piacevole, dove il plug-in di convalida viene utilizzato solo come ripiego per la visualizzazione dei messaggi di errore sui browser meno recenti e per la logica di convalida HTML5 non supporta (senza Javascript aggiuntivo). Ma questa è più che altro la mia preferenza personale.
Matt Browne

1
@ MattB., In genere, le persone che utilizzano jQuery cercano la coerenza cross-browser che si ottiene allontanandosi dalle funzionalità del browser che variano notevolmente da marchio a marchio. Preferisco anche restare con plugin popolari che hanno un'enorme base di supporto, e se lo sviluppatore fa anche parte del team jQuery , tanto meglio, IMO.
Sparky
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.