重命名某个div中的部分文本字段

时间:2012-06-08 09:12:43

标签: jquery

我有一个html页面,我有一些文本字段。每组文本字段都属于DIV。我想更改某些文本字段的名称。但是,当您查看示例html时,这可能会更清楚:

http://jsfiddle.net/dg2Bz/

正如您所看到的,第一个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实际做到这一点。我确定它可能以某种方式,它可能涉及一些正则表达式。只是无法理解它......

2 个答案:

答案 0 :(得分:3)

这是一种可能的解决方案:

$(".dummy :input[name^=test]")​​​​​​​​​​​​​.attr("name", ​​function(i, value) {
    var name = $(this).parent().children(":first").val();
    return value.replace(/\[\d{3}\]/, "[" + name + "]");
});​

DEMO: http://jsfiddle.net/dg2Bz/1/

答案 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 + "]");
        });
    });

});