jQuery validation tricks

14 Giugno 2012Scritto da mario3

jQuery Validation è un plugin di jQuery che permette in modo facile ed intuitivo di effettuare validazione client-side. Tempo fa scrissi un articolo di infarinatura; ho parlato del progetto ed elencato metodi standard per effettuare validazioni non molto complesse.

Con il passare del tempo ho raccolto una serie di trucchi e suggerimenti per effettuare validazioni più “estreme”; come di consueto le lascio a disposizione:

Verificare due campi uguali

Esempio più comune: confrontare l’uguaglianza tra due campi email o password:

jQuery('#myform').validate({ 
   rules: {
      email_field:
      {
         required: true, equalTo: "#email_field_confirm"
      }
   }
});

Gestire le dipendenze

Effettuare una validazione di un campo solo se non fleggato un suo discendente.

jQuery(function(){
    jQuery('#myform').validate({
           other_field: {
                required: {
                    depends: function(element)
                    {
                        return (jQuery('input[name="other_flag"]').attr('checked') != undefined);
                    }
                }
            }
    });
});

Messaggi custom

Messaggi personalizzati di errore senza bisogno di modificare il javascript sorgente.

jQuery('#myform').validate({ 
   messages: { 
      field_name: 'Please fill ' + field_name;
   }
});
jQuery(".selector").validate({
   rules: {
     name: "required",
     email: {
       required: true,
       email: true
     }
   },
   messages: {
     name: "Please specify your name",
     email: {
       required: "We need your email address to contact you",
       email: "Your email address must be in the format of name@domain.com"
     }
   }
})

Ignorare elementi

Se utilizzo una validazione standard dell’intero form posso escludere tramite dei campi attraverso l’attributo class o id.

jQuery("#myform").validate({
   ignore: ".ignore"
})

Callback

Esegue funzioni di callback a seconda dell’handler in entrata, nell’esempio utilizzo submitHandler per inviare un alert al click del tasto “submit”.

jQuery("#myform").validate({
   meta: "validate",
   submitHandler: function() { alert("Submitted!") }
})

Posizione dei messaggi di errore

Di default i messaggi di errore compaiono accanto ai campi, attraverso un wrapper ed un contenitore vuoto possiamo definire una diversa posizione per la comparsa degli errori.

    jQuery("#myform").validate({
       errorLabelContainer: "#messageBox",
       wrapper: "li",
       submitHandler: function() { alert("Submitted!") }
    })
    

    Oppure inserire più messaggi:

      There are errors in your form, see details above!

      jQuery("#myform").validate({
         errorContainer: "#messageBox1, #messageBox2",
         errorLabelContainer: "#messageBox1 ul",
         wrapper: "li", debug:true,
         submitHandler: function() { alert("Submitted!") }
      })
      

      Scritto da mario

      Agile web e mobile developer, attraverso il blog mette in campo l'esperienza acquisita quotidianamente sul mondo del lavoro.

      3 comments

      • Franklin

        18 Giugno 2012 at 23:34

        Salvo nei preferiti. Grazie!

        Reply

      • Lorenzo

        21 Luglio 2012 at 12:29

        Ciao,
        hai esposto chiaramente l’utilizzo. Se volessi cambiare solamente il colore del bordo dell’input field errato, ignorando messaggi testuali, avresti qualche idea?

        Per ora ho creato una classe css di errore che richiamo con:
        errorClass: “form_error”.

        Reply

        • Sato

          21 Luglio 2012 at 15:38

          Modiificare il bordo da css?

          Reply

      Lascia un commento

      Your email address will not be published. Required fields are marked *

      https://www.fullstacksas.it/wp-content/uploads/2021/11/FULLSTACK-LOGO-MINI-150x131.png

      Via Vito Rosa, 7
      70127 Bari – IT
      P.iva – 08087100726

      Gli attrezzi del mestiere

      Full Stack Sas – p.iva 08087100726 – Rea n. BA – 603324

      Copyright 2019. Bold Themes. All rights reserved.

      bt_bb_section_top_section_coverage_image