2013-07-05 18 views

risposta

2

È possibile utilizzare h5validate che fa esattamente quello che vi serve.

<script> 
$(document).ready(function() { 
    $('form').h5Validate(); 
}); 
</script> 
+0

che sembrano avere alcuni problemi piuttosto con il loro codice di prova e la documentazione manca di alcune delle caratteristiche di cui abbiamo bisogno come senza spazi o simboli – steve0nz

+0

hai solo bisogno di verificare l'attributo 'richiesto'? Forse sarebbe meglio conoscere più dettagli e costruirne uno di conseguenza. –

4

Si potrebbe shim semplicemente ...

if ($("<input />").prop("required") === undefined) { 
    $(document).on("submit", function(event) { 
     $(this) 
      .find("input, select, textarea") 
      .filter("[required]") 
      .filter(function() { return this.value; }) 
      .each(function() { 
       // Handle them. 
      }); 
    }); 
} 
+1

Il tuo codice contiene effettivamente un bug, dato che '.filter (function() {return this.value;})' non includerà solo i campi vuoti del modulo ma EXCLUDE tutti i campi vuoti del modulo, in modo da finire con tutti i campi sono obbligatori e hanno contenuto, invece di tutti i campi modulo obbligatori che mancano di contenuto. –

+0

@ S.B. Hai ragione. Se questo è contro i tuoi obiettivi, ometti quella linea. – alex

+0

@alex Non si può semplicemente omettere quella linea e quindi risolvere il problema. Gestirà ogni campo "richiesto", anche se non è vuoto. –

2

ho scritto un semplice plugin per jQuery per questo. Aggiunge solo la validazione lato client a una form usando l'attributo 'required'.

https://github.com/garyv/jQuery-Validation-plugin

Dopo incluso il plug-in, è possibile chiamare il validate() nella funzione pronti documento di jQuery o alla fine del corpo HTML.

<script> 
    $(document).ready(function(){ 
    $('form').validate(); 
    }); 
</script> 
+0

quando dici 2. Chiama $ ('form'). Validate(); come farlo? semplicemente aggiungi $ ('form'). validate(); ' all'interno della pagina? Ho provato il tuo plugin ma non riesco a farlo funzionare – Baig

+0

Ho aggiornato il commento con un esempio. La mia ipotesi è che stavi cercando di chiamare validate() prima di includere il plug-in o prima dell'elemento

. JavaScript corre molto in sequenza - quindi bisogna includere plugin e il codice HTML prima di utilizzare una di esse nel codice. Questa è una parte fondamentale di come funzionano HTML e JavaScript. La funzione di documento pronto di jQuery è un modo comune di gestirlo - http://api.jquery.com/ready/ - tutto ciò che serve è ritardare il codice in esecuzione fino a dopo il caricamento della pagina Web, in modo che possa fare riferimento a qualsiasi HTML nella pagina . – garyv

+0

Non funziona in IE8, che senso ha usare questo? IE9 e versioni successive supportano la convalida HTML5. – Piero

7

questo funziona senza alcun plugin (solo JQuery):

<script> 

    // fix for IE < 11 
    if ($("<input />").prop("required") === undefined) { 
     $(document).on("submit", function(e) { 
      $(this) 
        .find("input, select, textarea") 
        .filter("[required]") 
        .filter(function() { return this.value == ''; }) 
        .each(function() { 
         e.preventDefault(); 
         $(this).css({ "border-color":"red" }); 
         alert($(this).prev('label').html() + " is required!"); 
        }); 
     }); 

    } 
</script> 
+0

come cambieresti questo per controllare ogni volta che si fa clic su invia? Per sbarazzarsi del bordo rosso se il campo è stato riempito. – Ben