2012-06-07 64 views
1

有一个DIV的ID =“cartArea”在那里我有文本框多张jQuery的 - 重命名元素

<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_1tb_3,而是tb_1tb_2

可以这样做,如果是如何?

+1

你确实需要调用textfields tb_1吗?还是会为你工作呢?这将自动调整Postdata – Katai

回答

1

将此代码放入某个函数中并在删除元素后调用该函数。

试试这个,Live Demo

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

    this.name ='tb_' + eval($(this).index()+1); 
    //alert(this.name) 
    });​ 
+0

尝试此数量,我可以更改编号确定,但名称不会改变 – Martin

+0

名称在这里更改http://jsfiddle.net/yrhEu/3/ – Adil

0

AFER您删除,您可以运行该代码重新命名他们:

$('input[id^=tb_]').each(function(i, v){ this.name = 'tb_' + i; }); 
1

您可以非常简单地实现自己的目标,例如以下:

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

DEMO

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

0

我没有” t像其他人的回应,因为他们要么你sed昂贵的输入[id^=]选择器,罗嗦的输入[type = text]选择器,没有考虑到i-being 0 based或没有设置name属性。

删除后可以运行此代码以重命名文本框。

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

的jsfiddle:http://jsfiddle.net/HT6gS/

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']这是一个数组。因此,如果您向服务器发送了3个输入,则可以使用$_GET['tb'][0],$_GET['tb'][1]$_GET['tb'][2]表示您的数据。