Creare Form con validazione e CAPTCHA in Joomla 3 - seconda parte
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js" type="text/javascript"></script>
NOTA: forse qualcuno si chiederà che cos'è il sito cndjs.cloudflare.com; presto detto, date un'occhiata alla pagina About dello stesso. In parole povere è un repository di librerie di vario tipo ospitato su Cloudflare. E non mi dite "tutti lo sanno, perchè specificarlo?". Io credo nel detto "Ogni domanda è semplice quando si conosce la risposta", che ho sempre interpretato in modo più ampio come un suggerimento a chiedere quando non si sa una cosa.
<form action='#' method='post' id='form_demo'> <fieldset> <legend>I tuoi dati</legend> <div class="control-group"> <div class="input-prepend"> <span class="add-on"><span class="icon-user"></span></span> <input class="input-xxlarge" type='text' placeholder='Il tuo nome (3-15 caratteri, richiesto)' name='nome' id='nome' /> </div> </div> <div class="control-group"> <div class="input-prepend"> <span class="add-on"><span class="icon-user"></span></span> <input class="input-xxlarge" type='text' placeholder='Il tuo cognome (3-15 caratteri, richiesto)' name='cognome' id='cognome' /> </div> </div> <div class="control-group"> <div class="input-prepend"> <span class="add-on"><span class="icon-plus"></span></span> <input class="input-min" type='text' placeholder='Età (18-60, richiesto)' name='eta' id='eta' /> </div> </div> <div class="control-group"> <div class="input-prepend"> <span class="add-on"><span class="icon-envelope"></span></span> <input class="input-xxlarge" type='text' placeholder='Il tuo indirizzo email (richiesto)' name='email' id='email' /> </div> </div> <div class="control-group"> <div><strong>Genere</strong> (richiesto)</div> <label class='radio inline'> <input id='maschio' type='radio' name='sesso' value='Maschio' /> Maschio </label> <label class='radio inline'> <input id='femmina' type='radio' name='sesso' value='Femmina' /> Femmina </label> <label for="sesso" class="error"></label> <!‐‐ riga numero 3 ‐‐> </div> <div class="control-group"> <div><strong>Il tuo sistema operativo</strong> (scegli almeno un sistema)</div> <label class='checkbox inline'> <input type='checkbox' name='os[]' id='win32' value='Windows' /> OS Windows 32/64 bit </label> <label class='checkbox inline'> <input type='checkbox' name='os[]' id='linux' value='Linux' /> Linux </label> <label class='checkbox inline'> <input type='checkbox' name='os[]' id='mac' value='Mac' /> Mac OS </label> <label for="os[]" class="error"></label> <!‐‐ riga numero 4 ‐‐> </div> <div class="control-group"> <textarea class="input-xxlarge" id='note' name='note' rows='5' placeholder='Altre note e richieste'></textarea> </div> </fieldset> <div class="control-group text-center"> <button class="btn btn-primary" type='submit' id='invia_form'>Invia</button> </div> </form> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js" type="text/javascript"></script> <!‐‐ riga numero 1 ‐‐> <script type="text/javascript" src='script/validate.js'></script> <!‐‐ riga numero 2 ‐‐>
jQuery(document).ready(function() { jQuery("#form_demo").validate( { rules: { nome: { required: true, minlength: 3, maxlength: 15 }, cognome: { required: true, minlength: 3, maxlength: 15 }, eta: { required: true, number: true, range: [18,60] }, email: { required: true, email: true }, sesso: "required", 'os[]': "required" }, messages: { nome: { required: "<div class='help-inline'>Inserisci il nome</div>", minlength: "<div class='help-inline'>Il nome deve avere almeno 3 caratteri</div>", maxlength: "<div class='help-inline'>Il nome deve avere al massimo 15 caratteri</div>" }, cognome: { required: "<div class='help-inline'>Inserisci il cognome</div>", minlength: "<div class='help-inline'>Il cognome deve avere almeno 3 caratteri</div>", maxlength: "<div class='help-inline'>Il cognome deve avere al massimo 15 caratteri</div>" }, eta: { required: "<div class='help-inline'>Incida la tua età</div>", number: "<div class='help-inline'>L'età va indicata con un numero</div>", range: "<div class='help-inline'>L'età deve essere compresa tra 18 e 60 anni</div>" }, email: "<div class='help-inline'>Inserisci un indirizzo email valido</div>", sesso: "<div class='text-error'>Seleziona sesso</div>", 'os[]': "<div class='text-error'>Seleziona uno o più sistemi operativi</div>" }, highlight: function(element) { if (jQuery(element).attr("name") != "os[]" && jQuery(element).attr("name") != "sesso") jQuery(element).closest('.control-group').removeClass('success').addClass('error'); }, unhighlight: function(element){ if (jQuery(element).attr("name") != "os[]" && jQuery(element).attr("name") != "sesso") jQuery(element).closest('.control-group').removeClass('error').addClass('success'); } }); });
jQuery("#form_demo").validate(...
applica le condizioni di validazione al form con ID form_demo; la sezione rules definisce le regole di validazione: required indica che il campo di input individuato dall'identificatore corrispondente è obbligatorio, minlength e maxlength indicano lunghezza minima e massima dei campi (si parla di testo), number indica che il relativo campo deve contenere valori numerici e range è l'intervallo di quelli consentiti. Tutto qui.- I più attenti potrebbero notare che la sezione textarea nel form non mostra le 5 righe previste dal codice HTML ("rows='5'"). Se lo provate nel template Protostar, le presenterà regolarmente. Si tratta di una particolarità del template usato nel mio sito.
- Noterete che l'indirizzo email viene considerato valido quando ha la forma account@dominio, senza suffisi. È corretto così, come da standard (si veda questo articolo su Wikipedia). Se poi preferite che la validazione dell'email preveda il classico formato account@dominio.xxx, allora avete un'ottima occasione per modificare lo script scrivendo una regola personalizzata. Nel caso, ricordate che le espressioni regolari sono vostre amiche.
Tags: Joomla, Personalizzare template, Twitter Bootstrap, jQuery