我有一个看起来像这样的输入字段......
<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...
});
我有什么想法可以做到这一点吗?
答案 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);
<强>更新强>
没有硬编码值的解决方案'香肠'
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);
答案 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++ + '][]');
});