0

我有以下输入字段,我试图弄清楚如何增加特定括号值的值......

我将如何增加特定的括号值(即,title[0][subtitle][3] 变为 title[0][subtitle][4])?

我已经设法通过硬编码一个值来使其部分工作......下面的代码基本上可以满足我的需求,除了我无法弄清楚如何动态存储和增加该特定值......

(也发布在 jsfiddle 上:http: //jsfiddle.net/492bD/)...

<input type="text" class="form-text" value="" name="title[0][subtitle][0]">
<button id="clickme">Click me</button>
​
$('#clickme').live('click', function() { 
var lastSubTitle = $('input.form-text').attr('name');
var newSubTitle = lastSubTitle.replace(/^(.*\[[0-9]+\].*)(\[[0-9]+\])(.*)$/, '$1[20]$3');
alert(newSubTitle);
});
4

2 回答 2

1

是否有某些原因您不想只使用两个(或更多)属性并分别递增它们?

<input type="text" class="form-text" value="" data-title="0" data-subtitle="0">
<button id="clickme">Click me</button>
​
$('#clickme').live('click', function() {
    var formText$ = $('input.form-text');
    formText$.attr('data-subtitle', +formText$.attr('data-subtitle') + 1); 
    alert(formText$.attr('data-subtitle'));
});​

如果您需要name具有该特定格式的值,则可以name在递增数据后设置属性。

formText$.attr('name', 'title[' + formText$.attr('data-title') +
                       '][subtitle][' + formText$.attr('data-subtitle') + ']');

你可以在http://jsfiddle.net/tMcxH/1/看到它。

于 2012-09-23T19:05:32.813 回答
0

您可以在不参考复杂的正则表达式的情况下做到这一点,这是使用字符串函数完成的解决方案:

lastSubTitle = "title[0][subtitle][0]";
var n = lastSubTitle.substr(0, lastSubTitle.length -1);
var f = n.substr(n.lastIndexOf('[')+1);
var value = parseInt(f,10);
value++;
lastSubTitle = lastSubTitle.substr(0, n.lastIndexOf('[')+1) + value + ']';

alert(lastSubTitle); // alerts "title[0][subtitle][1]"

应该这样做。

于 2012-09-23T19:12:07.860 回答