2010-07-10 9 views
109

Devo modificare alcuni input di casella di controllo in input nascosti per alcuni ma non tutti gli input di una pagina.immissione di destinazione per tipo e nome (selettore)

<input type="checkbox" name="ProductCode"value="396P4"> 
<input type="checkbox" name="ProductCode"value="401P4"> 
<input type="checkbox" name="ProductCode"value="F460129"> 

Il codice jquery sotto solo seleziona l'ingresso per tipo che causa tutte le caselle di cambiata ingressi nascosti C'è un modo per controllare sia tipo di input = "casella" e name = "ProductCode" come selettore in modo da poter indirizzare in modo specifico quelli che voglio cambiare?

$("input[type='checkbox']").each(function(){ 
var name = $(this).attr('name'); // grab name of original 
var value = $(this).attr('value'); // grab value of original 
var html = '<input type="hidden" name="'+name+'" value="'+value+'" />'; 
$(this).after(html).remove(); // add new, then remove original input 
}); 

risposta

227

Volete una multiple attribute selector

$("input[type='checkbox'][name='ProductCode']").each(function(){ ... 

o

$("input:checkbox[name='ProductCode']").each(function(){ ... 

Sarebbe preferibile utilizzare una classe CSS per identificare quelli che si desidera selezionare, tuttavia, poiché molti dei moderni browser implementano il metodo document.getElementsByClassName che verrà utilizzato per selezionare gli elementi ed essere molto più veloce rispetto alla selezione dell'attributo name

+0

Entrambi hanno funzionato per me ma ho usato il secondo metodo. THX, ho un'altra domanda, ma farò una nuova domanda. – user357034

18

È possibile combinare i selettori di attributo in questo modo:

$("[attr1=val][attr2=val]")... 

in modo che un elemento deve soddisfare entrambe le condizioni. Ovviamente puoi usarlo per più di due. Inoltre, non fare [type=checkbox]. jQuery ha un selettore per questo, cioè :checkbox modo che il risultato finale è:

$("input:checkbox[name=ProductCode]")... 

selettori Abilità sono lenti però così l'approccio consigliato è quello di utilizzare ID e classe selettori ove possibile. Si potrebbe cambiare il vostro codice a:

<input type="checkbox" class="ProductCode" name="ProductCode"value="396P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="401P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="F460129"> 

che consente di utilizzare il selettore molto più veloce di:

$("input.ProductCode")... 
+0

Ovviamente funziona anche così, ma posso dare solo una persona per la risposta giusta. :) Una cosa è che non posso scegliere come target in base alla classe perché non ho accesso al markup a meno che non aggiungo una classe e quale punto farebbe. Ma Thx !!! – user357034

4
input[type='checkbox', name='ProductCode'] 

Questo è il modo CSS e sono quasi sicuro che funzionerà in jQuery.

Problemi correlati