3

いくつかのテキストフィールドがある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で実際にこれを行う方法がわかりません。どういうわけかそれは可能だと私は確信しています、そしてそれはおそらくいくつかの正規表現を含みます。頭が回らない...

4

2 に答える 2

3

これは1つの可能な解決策です:

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

デモ:http: //jsfiddle.net/dg2Bz/1/

于 2012-06-08T09:17:47.513 に答える
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 + "]");
        });
    });

});
于 2012-06-08T09:21:31.210 に答える