2012-09-23 45 views
0

我有以下的输入领域,我试图找出如何增加特定的括号值的值的属性...的jQuery - 获得多维命名输入

我会怎样(即标题[0] [小标题] [3]变为标题[0] [小标题] [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); 
}); 
+0

你想存储哪个值? – nandu

回答

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/看到它。

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]" 

应该这样做。