jQuery - 使用多维数组动态修改输入名称

时间:2014-03-04 09:28:44

标签: javascript jquery hidden-field square-bracket

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

<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 个答案:

答案 0 :(得分:1)

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

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

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

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

name.replace(/]\[\]$/, 'new value][]');

答案 1 :(得分: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/

答案 2 :(得分:1)

试试这个:

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

<强> Working Demo

答案 3 :(得分:0)

使用此代码:

var counter = 1;
  $('a.mylink').click(function(){
  $(':text').attr('value', 'myInput[1][sausages][' + counter++ + '][]');
});