0

次の入力フィールドがあり、特定の括弧で囲まれた値の値を増やす方法を見つけようとしています...

特定のブラケット値をインクリメントするにはどうすればよいですか (つまり、タイトル[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);
});
4

2 に答える 2

1

2つ(またはそれ以上)のプロパティを使用して別々にインクリメントしたくない理由はありますか?

<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 に答える