la convalida di più caselle di testo con lo stesso nome con jquery validator convalida solo il primo input

Sto provando a convalidare i due ingressi che hanno lo stesso nome con validatore jQuery.

   $(document).ready(function(){ $('#frm').validate(); $("[name=inp_text]").each(function(){ $(this).rules("add", { required: true, checkValue: true }); }); $.validator.addMethod("checkValue", function(value, element) { var response = ((value > 0)&&(value <= 100))||((value == 'test1')||(value =='test2')); return response; }, "invalid value"); })  


ma quando eseguo questo codice, convalida solo i primi input e il secondo input viene semplicemente ignorato

Ho anche provato a usare
ma ancora non funziona.

cosa dovrei cambiare …?

Grazie in anticipo

“Sto provando a convalidare i due ingressi che hanno lo stesso nome con validatore jQuery …”

   

“ma quando eseguo questo codice, convalida solo i primi input e il secondo input viene semplicemente ignorato”

Non puoi avere due campi di input di type="text" con lo stesso name o questo plugin non funzionerà correttamente. L’attributo name deve essere unico. (Un’eccezione al fatto che il name sia univoco, è che i “raggruppamenti” di checkbox o di ingressi radio condividono lo stesso name del corrispondente invio è un singolo punto di dati. Tuttavia, il name deve essere ancora univoco per ogni raggruppamento di checkbox e radio elementi.)

“cosa dovrei cambiare …?

Rendi ciascun attributo del name univoco.

   

Quindi usa il selettore “inizia con”, ^=

 $("[name^=inp_text]").each(function () { $(this).rules("add", { required: true, checkValue: true }); }); 

DEMO di lavoro: http://jsfiddle.net/PgLh3/

NOTE : Puoi anche scegliere gli elementi target per id quando usi il metodo rules('add') , tuttavia in questo caso, nulla viene risolto perché il plugin richiede ancora un name univoco su ciascun elemento di input .

Aggiungi una configurazione come la seguente come regole o messaggi

 multipleInputSharedName: { inp_text: true } 

Cambia codice in jquery.validate.js Nome metodo: elementi

sostituire il seguente

 if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) { return false; } 

con il seguente

 if ( (!validator.settings.multipleInputSharedName[this.name] && this.name in rulesCache) || !validator.objectLength( $( this ).rules() ) ) { return false; } 

Sì, la convalida di JQuery valuterà solo la prima occorrenza. Si utilizzano nomi diversi per le caselle di testo. O puoi usare gli stessi nomi ma diversi ID. e applicare il controllo in base all’ID.

$ (“# myform”). validate ({rules: {#id_of_field: {required: true, checkValue: true}}});

Amici!

Per convalidare la casella di testo / casella di spunta / selezionare con lo stesso nome, utilizzare quanto segue funziona correttamente per me.

Qui ‘ctryId’ è il nome della casella di selezione.

 function validateCountry(){ inp = document.getElementsByTagName("select"); for ( var i = 0; i < inp.length; ++i ) { if (inp[i].name =="ctryId" && inp[i].value==''){ alert('plesae select a country!'); return false; } } return true; } 

Qui 'minVal' è il nome della casella di testo

 function validateMinimumVal(){ inp = document.getElementsByTagName("TEXT"); for ( var i = 0; i < inp.length; ++i ) { if (inp[i].name =="minVal" && inp[i].value==''){ alert('plesae Add a MINIMUM VALUE!!'); return false; } } return true; } 

Spero che questo ti aiuti!! Jagan