2010-08-04 9 views
6

Ho difficoltà a far funzionare il plugin jQuery Validation come voglio. Si prega di nudo con me dal momento che non sono un esperto jQ :).valid() convalida solo il primo input con il plugin jQuery Validation

Quello che ho è un modulo con più ingressi richiesti, le regole come mostrato di seguito:

$("#makeEvent").validate({ 
    onfocusout: false, 
    rules: { 
     name: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     host: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     startDate: { 
      required: true, 
      date: true 
     }, 
     endDate: { 
      required: true, 
      date: true 
     }, 
     desc: { 
      required: true, 
      minLength: 10, 
      maxLength: 255 
     }, 
     webpage: { 
      required: false, 
      url: true 
     }, 
     email: { 
      required: true, 
      email: true 
     }, 
    } 
}); 

Ora ho una chiamata .Click personalizzato() dove voglio convalidare il modulo e quindi mostrare un'anteprima per l'utente prima di consentire loro di inviare il modulo. Vedere il seguente funzione:

$('#submitPreview').click(function() { 
    if($("#makeEvent").valid() === false) { 
     //What to do if validation fails 
    } else if($("#makeEvent").valid() === true) { 
     //Show the preview and let the user either make changes or submit the final result 
    } 
}); 

Ma ciò che accade è che la funzione convalida solo il primo ingresso (nome) e anche lo convalida in modo errato (norme richiede un minimo di 2 caratteri, ancora convalida con solo 1 carattere inserito. Restituisce solo false se non viene aggiunto alcun carattere).

Forse il mio approccio non è il migliore, quindi sono aperto a qualsiasi suggerimento. Se vuoi dare un'occhiata al codice sorgente disordinato puoi vedere la funzione in azione qui: http://event.gusthlm.se/make.php

Grazie!

risposta

19

Due problemi che riesco a vedere sono che non si sta utilizzando l'attributo name nei campi di input e si sta utilizzando name come uno degli ID (causa tutti i tipi di dolore per IE sul modulo di invio).

vorrei suggerire di aggiungere il nome attribuisce al vostro ingresso, elementi selezionati e textarea e cambiando "nome" a qualcosa di simile "theName":

<label for="thename">Börjar</label> 
<input type="text" name="thename" id="thename"/> 
+0

indovinate cosa? Questo ha risolto il problema. Non avrei mai immaginato ... Grazie! –

+0

So che questo è vecchio ma ho un problema in cui non posso avere il campo del nome. Sto usando Stripe per convalidare le carte di credito e per mantenere le informazioni sulla carta di credito dal nostro server dobbiamo escludere l'attributo name. Sono anche curioso del perché l'attributo name abbia qualche influenza sulla validazione lato client? – computrius

+0

@computrius, poiché il plugin jQuery Validate richiede un attributo 'name' ... è il modo in cui lo sviluppatore ha deciso che il plug-in dovrebbe tenere traccia degli input. – Sparky

Problemi correlati