7

我有复杂的输入元素类型text,名称如product[1][combinations][x][price]. 这个元素有很多,只是名称的区别 after[combinations]和 after [x]

例如:

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]

上述值x, xx,和xxx, , ,代表每个 的唯一值。每个组中的第一个定义(例如)代表父产品或所有者产品,其价值 i 将批量更新为其子产品(组合)。xxxxaaaaaaaaaaproduct[id]product[2][sale_price]

我想根据存储的信息类型来查找这些元素的组,例如sale_price,然后更改其值。我不需要考虑唯一值,[x]所以我希望我可以使用通配符。

我希望这样的事情可以解决问题(示例):

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

但是*我猜这并不是真正的通配符,所以我不能那样使用它。

我意识到我可以做这样的事情,但是这将分配0给所有输入,而不仅仅是sale_price

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

如何$("input[name='product[1][combinations][*][price]'][type='text']").val(0);用适当的通配符替换 this() 选择器?如果可能的话,我想保持名称数组值的顺序相同

4

2 回答 2

7

不确定这是否是您想要的...但是您可以使用属性选择器来$选择所有以指定文本结尾的输入...这样就可以了

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

并且您实际上并不需要[type='text']上述选择器将获取名称以字符串结尾的元素...但是,如果您想更具体并确保只需要输入就可以了...您可以添加相同的这里也。

这里的例子小提琴

更新

然后您可以使用多个属性选择器..^搜索以指定字符串开头的元素

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

更新的小提琴

于 2013-05-17T21:24:03.227 回答
4

您可以使用多个属性选择器:

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

http://jsfiddle.net/QsVnR/

于 2013-05-17T21:21:48.670 回答