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 中删除没有问题,但我需要做的是重命名剩余的文本框。

所以如果我删除tb_2,我不会留下tb_1and tb_3,而是tb_1andtb_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

我不喜欢其他人的回答,因为他们要么使用了昂贵的 input[id^=] 选择器、冗长的 input[type=text] 选择器,要么没有考虑基于 i-being 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

删除后,您可以遍历剩余元素并更改名称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^=tb_]').each(function(i, v){ this.name = 'tb_' + i; });
于 2012-06-07T11:20:57.763 回答
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 回答