Muszę zmienić niektóre pola wyboru na ukryte dane wejściowe dla niektórych, ale nie wszystkich danych wejściowych na stronie.
<input type="checkbox" name="ProductCode"value="396P4">
<input type="checkbox" name="ProductCode"value="401P4">
<input type="checkbox" name="ProductCode"value="F460129">
Poniższy kod jquery wybiera dane wejściowe tylko według typu, co powoduje zmianę wszystkich pól wyboru na ukryte dane wejściowe Czy istnieje sposób na sprawdzenie zarówno typu input = "pole wyboru", jak i name = "ProductCode" jako selektora, abym mógł na nie wskazać że chcę zmienić?
$("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
});
Możesz łączyć selektory atrybutów w ten sposób:
$("[attr1=val][attr2=val]")...
tak, że element musi spełniać oba warunki. Oczywiście możesz używać tego przez więcej niż dwie osoby. Nie rób też tego
[type=checkbox]
. jQuery ma do tego selektor,:checkbox
więc wynik końcowy to:$("input:checkbox[name=ProductCode]")...
Selektory atrybutów są jednak powolne, dlatego zalecanym podejściem jest użycie selektorów identyfikatorów i klas tam, gdzie to możliwe. Możesz zmienić swój znacznik na:
<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">
co pozwala na użycie znacznie szybszego selektora:
$("input.ProductCode")...
źródło
input[type='checkbox', name='ProductCode']
To jest sposób CSS i jestem prawie pewien, że będzie działać w jQuery.
źródło