2013-08-19 11 views
6

Ho un modulo con 2 campi; cellulare n. e telefono no.jQuery Plugin convalida, è richiesto uno dei due campi

almeno 1 dei campi deve essere compilato, ma entrambi possono anche essere riempiti.

Ho bisogno di jquery validate per generare un errore se nessuno di questi è stato compilato.

ho raggiunto questo obiettivo con:

rules: { 
      mobile:{ 
       required: { 
        depends: function(element) { 
         return $("#regTelephone").val() === ''; 
        } 
       } 
      }, 
      telephone:{ 
       required: { 
        depends: function(element) { 
         return $("#regMobile").val() === ''; 
        } 
       } 
      } 
} 

tuttavia, se un solo campo è vuoto, questo campo ottiene ancora la classe 'valida', che non voglio che il mio css validi ha un bordo verde (quindi il campo vuoto ottiene ancora un bordo verde)

così: come ottengo il campo che è vuoto (a condizione che l'altro abbia un valore) per non ottenere la classe valida e quindi il bordo verde?

+0

Si potrebbe mettere un'istruzione if dopo che è stato convalidato per rimuovere la classe valida se il '.val' è nullo –

+1

@Zeaklous, Cordiali saluti, il plugin ha già una regola/metodo per questa situazione chiamata' require_from_group' . – Sparky

risposta

13

Utilizzando the optional additional-methods.js file, esiste un metodo chiamato require_from_group che fa esattamente ciò che si richiede. (È necessario utilizzare almeno versione 1.11.1 del plugin in modo da evitare un passato bug.)

rules: { 
    mobile:{ 
     require_from_group: [1, '.mygroup'] 
    }, 
    telephone:{ 
     require_from_group: [1, '.mygroup'] 
    } 
}, 
.... 

Il parametro 1 è il numero del gruppo sono richiesti. Nel markup HTML, i campi del gruppo devono contenere un class corrispondente allo class specificato nel secondo parametro.

<input type="text" class="mygroup" name="mobile" /> 
<input type="text" class="mygroup" name="telephone" /> 

lavoro DEMO: http://jsfiddle.net/NfcxX/

mio demo mostra anche la possibilità groups che combina i più messaggi di errore in una sola.

+0

Ho riscontrato un problema con questo. Sembra impedire la convalida di altri campi. Ho aggiunto un campo "titolo" iniziale e la convalida viene ignorata: http://jsfiddle.net/NfcxX/19/ – Andy

+1

@Andy, ci sono alcuni discorsi su GitHub riguardo a questo bug che è stato risolto nell'ultima versione beta non ancora rilasciato. – Sparky

-1
<input type="text" name="mobile" id="regMobile"> 
<input type="text" name="telephone" id="regTelephone"> 

rules: { 
      mobile:{ 
       required: { 
        depends: function(element) { 
         return $("#regTelephone").val() == '' 
        } 
       } 
      }, 
      telephone:{ 
       required: { 
        depends: function(element) { 
         return $("#regMobile").val() == '' 
        } 
       } 
      } 
} 
+0

Se fosse così semplice, non avremmo bisogno del metodo 'require_from_group'. – Sparky

Problemi correlati