2013-05-17 13 views
5

ho elementi input complessi di tipo text con nomi come product[1][combinations][x][price]. Ci sono molti di questi elementi, che differiscono nel nome solo dal valore dopo lo [combinations] e dopo lo [x].jquery jolly per nome dell'ingresso complesso con notazione array

Ad esempio:

product[1][price] 
product[1][combinations][x][price] 
product[1][combinations][xx][price] 
product[1][combinations][xxx][price] 
product[1][combinations][xxxx][price] 

product[1][sale_price] 
product[1][combinations][x][sale_price] 
product[1][combinations][xx][sale_price] 
product[1][combinations][xxx][sale_price] 
product[1][combinations][xxxx][sale_price] 

product[2][price] 
product[2][combinations][a][price] 
product[2][combinations][aa][price] 
product[2][combinations][aaa][price] 
product[2][combinations][aaaa][price] 

product[2][sale_price] 
product[2][combinations][a][sale_price] 
product[2][combinations][aa][sale_price] 
product[2][combinations][aaa][sale_price] 
product[2][combinations][aaaa][sale_price] 

i valori sopra x, xx, xxx, xxxx e a, aa, aaa, aaaa rappresentano valori unici per product[id]. la prima definizione di ogni gruppo (product[2][sale_price] per esempio) rappresenta il prodotto genitore o proprietario che di valore sarò in batch aggiornamento ai suoi figli (combinazioni).

vorrei trovare gruppi di questi elementi in base a ciò il tipo di informazioni vengono memorizzate, per esempio sale_price e quindi modificare il suo valore. Non ho bisogno di considerare il valore univoco, [x], quindi speravo di poter usare un carattere jolly.

speravo qualcosa di simile sarebbe risolvere il problema (esempio):

$("input[name='product[1][combinations][*][price]'][type='text']").val(0); 

tuttavia la * non è davvero un jolly credo, quindi non posso utilizzare in quel modo.

mi rendo conto che potevo fare qualcosa di simile, ma questo assegnerà 0 a tutti gli ingressi, invece di appena sale_price:

$("input[name^='product[1][combinations]'][type='text']").val(0); 

come posso sostituire questo ($("input[name='product[1][combinations][*][price]'][type='text']").val(0);) Selettore con una wild card appropriata? Mi piacerebbe mantenere i valori nome di matrice nello stesso ordine, se possibile,

risposta

5

non so se questo è ciò che si desidera ... ma è possibile utilizzare l'attributo selecter con $ seleziona tutti gli ingressi che terminano con il testo specificato ... in modo che sarebbe

$("input[name$='[price]']").val(0); 
$("input[name$='[sale_price]']").val(1); 

e si realtà non ha bisogno [type='text'] quanto sopra selettore otterrà gli elementi con il nome che termina con la stringa ... se si vuole essere più specifico e assicurarsi che solo bisogno di ingressi solo allora la sua fine..you può aggiungere lo stesso qui pure.

example fiddle here

aggiornamento

quindi è possibile utilizzare più selettore di attributo .. ^ per cercare l'elemento che inizia con la stringa specificata

$("input[name^='product[1]'][name$='[price]']").val(0); 
$("input[name^='product[1]'][name$='[sale_price]']").val(1); 

updated fiddle

+0

quasi pensato che questo sarebbe fallo per me...eccetto che quando si mira alla FINE del nome, si perde il selettore del prodotto [1] che è necessario per limitare i valori aggiornati (per prodotto) – binnyb

+0

@binnyb aggiornato .. si prega di controllare – bipen

+1

sì, grazie è così, non battuto indefinitamente ad esso anche se. – binnyb

Problemi correlati