我有一个html页面,我有一些文本字段。每组文本字段都属于DIV。我想更改某些文本字段的名称。但是,当您查看示例html时,这可能会更清楚:
正如您所看到的,第一个div有3个文本元素,其名称为:
test[something][xxxx]
但是其他“虚拟”div具有带数字的文本字段:
<input name="test[100][name]" value="display" />
<input name="test[100][option1]" value="op1" />
<input name="test[100][option2]" value="op2" />
和
<input name="test[101][name]" value="borders" />
<input name="test[101][option1]" value="op1" />
<input name="test[101][option2]" value="op2" />
这些字段都属于div。我想要做的是更改名称的数字部分,并将其替换为“name”属性中具有“name”的第一个文本字段的值。所以它变成了这个:
<input name="test[display][name]" value="display" />
<input name="test[display][option1]" value="op1" />
<input name="test[display][option2]" value="op2" />
和
<input name="test[borders][name]" value="borders" />
<input name="test[borders][option1]" value="op1" />
<input name="test[borders][option2]" value="op2" />
我不确定如何用jQuery实际做到这一点。我确定它可能以某种方式,它可能涉及一些正则表达式。只是无法理解它......
答案 0 :(得分:3)
这是一种可能的解决方案:
$(".dummy :input[name^=test]").attr("name", function(i, value) {
var name = $(this).parent().children(":first").val();
return value.replace(/\[\d{3}\]/, "[" + name + "]");
});
答案 1 :(得分:2)
试试这个:
$(".dummy > input[name*=name]").change(function(){
var newName = this.value;
$.each($(this).parent(".dummy").find("input"),function(){
$(this).attr("name",function(i,value){
return value.replace(/\[\d{3}\]/, "[" + newName + "]");
});
});
});