1

そこに ID="cartArea" の div があります。複数のテキスト ボックスがあります。

<input type="text" id="tb_1" name="tb_1" />
<input type="text" id="tb_2" name="tb_2" />
<input type="text" id="tb_3" name="tb_3" />

など、リスト内のアイテムが多かれ少なかれ存在する可能性があります。各テキストボックスの横には、削除オプションがあります。選択したテキストボックスをコンテナ div から削除しても問題ありませんが、残りのテキストボックスの名前を変更する必要があります。

したがって、 を削除すると、 and がtb_2残るのではなく、 and が残りtb_1ます。tb_3tb_1tb_2

これを行うことができますか?

4

6 に答える 6

1

このコードを何らかの関数に入れ、要素を削除した後にその関数を呼び出します。

これを試してみてください、ライブデモ

 $('#cartArea').children('input[type=text]').each(function(){

    this.name ='tb_' + eval($(this).index()+1);
    //alert( this.name)
  });​
于 2012-06-07T11:19:41.517 に答える
1

次のように非常に簡単に目標を達成できます。

$('#cartArea input[type=text]').attr('id', function(){
  return 'tb_' + $(this).index();  // change id
}).attr('name', function() {
  return 'tb_' + $(this).index();  // change name
});

デモ

于 2012-06-07T11:21:11.770 に答える
0

削除後、残りの要素をループして名前を変更できますattr

サンプルHTML:

<input type="text" id="tb_1" name="tb_1" /><span>remove</span>
<input type="text" id="tb_2" name="tb_2" /><span>remove</span>
<input type="text" id="tb_3" name="tb_3" /><span>remove</span>​

サンプルコード:

jQuery('span').click(function(){
   jQuery(this).prev().remove();
   jQuery(this).remove();
    jQuery('input').each(function(index){
       jQuery(this).attr('name','tb_' + (index +1));   
    });
});​

JSFiddle

于 2012-06-07T11:22:01.570 に答える
0

コストのかかる input[id^=] セレクター、冗長な input[type=text] セレクターを使用したか、i が 0 ベースであることを考慮していなかったか、name 属性を設定していなかったため、他の応答が好きではありませんでした。

削除後にこのコードを実行して、テキストボックスの名前を変更できます。

$('#cartArea input:text').each(function(i){ this.id = this.name = 'tb_' + (i + 1); });

JSFiddle: http://jsfiddle.net/HT6gS/

于 2012-06-07T11:46:34.217 に答える
0

ここでは風変わりな JavaScript ソリューションは必要ありません。

次のようにしてください:

<input type="text" id="tb_1" name="tb[]" />
<input type="text" id="tb_2" name="tb[]" />
<input type="text" id="tb_3" name="tb[]" />

サーバー側$_GET['tb']は、配列を介してアクセスできます。したがって$_GET['tb'][0]、サーバーに 3 つの入力を送信した場合のデータ$_GET['tb'][1]を表します。$_GET['tb'][2]

于 2014-02-28T10:09:27.320 に答える
0

削除した後、次のコードを実行して名前を変更できます。

$('input[id^=tb_]').each(function(i, v){ this.name = 'tb_' + i; });
于 2012-06-07T11:20:57.763 に答える