2012-06-07 63 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]表示您的數據。