3

このような入力フィールドがあります...

<input type='hidden' name='myInput[1][sausages][0][]' value='123' />

ユーザーがボタンをクリックしたときに、角かっこの 3 番目のセットの値を変更する必要があります...

のようなもの

$("a.mylink").click( function() {
    $(this).siblings('input[name*=myInput]')..... CHANGE THE 0 to 1 in the third set of square brackets...
});

どうすればこれを行うことができますか?

4

4 に答える 4

1

次のように正規表現を使用して値を置き換えることができます。

var name = $('input [name*=myInput]').attr('name');
name.replace(/]$/, 'new value]');
$('input [name*=myInput]').attr('name', name);

新しい値は任意の数値にすることができます。この正規表現は、最後の括弧を新しい値に置き換えます: newvalue ]

または、2 番目から最後のブラケットを変更する場合は、次の正規表現を使用できます。

name.replace(/]\[\]$/, 'new value][]');
于 2014-03-04T09:39:14.980 に答える
1

これを試して

    var name = $('input[name*=myInput]').attr('name');
    var indexOfThirdBracket = name.indexOf('[', name.indexOf('sausages')) + 1;
    name = name.substring(0, indexOfThirdBracket) + '1' + name.substring(indexOfThirdBracket + 1);
    $('input[name*=myInput]').attr('name', name);

http://jsfiddle.net/3A592/

アップデート

ハードコード値「ソーセージ」のないソリューション

var name = $('input[name*=myInput]').attr('name');
var parts = name.split('[');
parts[3] = parts[3].replace('0', '1');
name = parts.join('[');
$('input[name*=myInput]').attr('name', name);

http://jsfiddle.net/56rtG/

于 2014-03-04T09:43:49.873 に答える
0

このコードを使用してください:

var counter = 1;
  $('a.mylink').click(function(){
  $(':text').attr('value', 'myInput[1][sausages][' + counter++ + '][]');
});
于 2014-03-04T09:44:31.590 に答える