3

我有一个看起来像这样的输入字段......

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

当用户单击按钮时,我需要更改第三组方括号中的值...

所以像

$("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');
    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 回答
1

尝试这个:

$('input').attr('name',$('input').attr('name').replace(/\[\d+](?!.*\[\d)/, '[1]'))

工作演示

于 2014-03-04T09:49:27.467 回答
1

您可以使用正则表达式来替换值,如下所示:

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

新值可以是任何数字 此正则表达式用新值替换最后一个括号: newvalue ]

或者,如果您想将第二个括号更改为最后一个括号,您可以使用此正则表达式:

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

使用此代码:

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