2009-07-07 21 views
6

Sto usando JQuery Validation. Ora voglio che le mie regole vengano invocate solo quando sono soddisfatte determinate condizioni, ovvero, voglio che $("#AppSelectField").is(':hidden') restituisca false, solo dopo invoco le regole.Convalida della regola condizionale in JQuery

Le mie regole è la seguente:

$(function() { 
    $("#RequestLock").validate({ 
     rules: { 
     FloorNum:{ 
     required: true, 
     digits: true 
     }, 


    }, 
    message: { 
    FloorNum: "The floor number must be integer", 

}, 

}); 
}); 

come modificare la sezione precedente per soddisfare le mie esigenze? Nota Non desidero scrivere il mio metodo personalizzato per required e digits.

risposta

16

Questo dovrebbe farlo:

$(function() { 
    var checkIfFieldVisible = function() { 
     return !$("#AppSelectField").is(':hidden'); 
    }; 

    $("#RequestLock").validate({ 
     rules: { 
      FloorNum: { 
       required: { depends: checkIfFieldVisible }, 
       digits: { depends: checkIfFieldVisible } 
      }, // <-- EXTRA COMMA 
     }, 
     message: { 
      FloorNum: "The floor number must be integer", 
     }, // <-- EXTRA COMMA 
    }); 
}); 

(ho segnato alcuni virgole in più che avete sul vostro codice, come faranno IE choke)

+0

Possiamo validare/non convalidare intero modulo basato su certa valori?. Ad esempio, ho un modulo annidato con i pulsanti Salva/Invia. Voglio convalidare solo su Invia. Il mio problema è quando ho la classe = "required" su ogni campo in quanto il modulo è molto dinamico. Per favore aiuto. – Aanu

+1

Non hai nemmeno bisogno della funzione, puoi semplicemente impostare 'depends = '#AppSelectField: visible'' – forivall

Problemi correlati