2009-12-24 24 views
0

後一個輸入控件的名稱屬性重置我有一個表格內HTML表在一個asp.net MVC視圖。我也使用了tablesorter jquery插件。如何一個jquery動作

下面是表代碼(簡化的例子)

<table id=managersTable> 
<thead> 
    <tr> 
      <th>Manager</th><th>Remove</th> 
    </tr> 
</thead> 
<tbody> 
<tr> 
     <td>Manager 1<input type='hidden' name='updater.managers[0].Id' value=2313 /></td> 
<tr> 
     <td>Manager 2<input type='hidden' name='updater.managers[1].Id' value=3233/></td> 
     <td><input type='button' class=removeButtonManager value='Remove' name='remove' /></td> 
</tr> 
</tbody> 

,從而可以看到,有一個與文本和一個按鈕的第二列的一列。我有它迷上了,所以當你點擊按鈕,它使用此代碼刪除行從HTML表格:

$(document).ready(function() { 
     $(".removeButtonManager").live("click", function(event) { 
      var row = $(this).closest("tr").get(0); 
      $(this).closest("tr").remove(); 
      $("#managersTable").trigger("update"); 
      $("#managersTable").trigger("appendCache"); 
     }); 
    }); 

一切都運行完美,除了一個問題。當我在「刪除」按鈕,點擊它去掉了行,但隨後的問題是,

name='updater.managers[0].Id' 

該指數已關閉,它看起來像在asp.net的MVC結合最新的版本,如果你沒有你的元素索引屬性(0,1,2等),它不綁定。

所以,如果我從來沒有刪除一行它完美的作品原來的0,1,2,但如果我刪除第一行的話,我只有列表(1,2)和asp.net的MVC不會綁定這個對象。

所以我想弄清楚如何我可以重置每個元素中的[]索引後,我刪除一個行,所以無論刪除任何行,它總是給我一個從0開始的連續列表。

回答

1

我想你會通過所有元素都具有循環和固定的ID。像這樣的東西應該工作

$(document).ready(function() { 
    $(".removeButtonManager").live("click", function(event) { 
     var row = $(this).closest("tr").get(0); 
     $(this).closest("tr").remove(); 
     $("#managersTable").trigger("update"); 
     $("#managersTable").trigger("appendCache"); 
     $("#managersTable").find("input[type=hidden]").each(function(i){ 
      //this is the current input we're looping through 
      //i is the index 
      $(this).attr('name', 'updater.managers['+i+'].Id'); 
     }); 
    }); 
}); 

看一看的文檔每個(http://docs.jquery.com/Utilities/jQuery.each#objectcallback)如果不馬上工作,我可以有混合的東西了。希望幫助

+0

所以這部分工作(upvoted的好主意)。一個問題是,在上面的情況下,我有2行開始(元素0,1),我刪除第一行(在上面的代碼後我應該有一個元素)我現在第二行的數據元素0(完美的),但我還可以得到一個返回與所有設置的屬性的對象的第二元件(1)。有任何想法嗎 ?? – leora 2009-12-24 16:48:40

+0

我真的不知道你的意思。 $(「#managersTable」)。發現(「輸入[類型=隱藏]」)返回的數組,並有在它的兩個元件?也許選擇器需要更具體,以便它只針對表格。我不確定你在第二個對象上的'所有屬性設置'是什麼意思。 – 2009-12-24 16:57:36

+0

最初有2行(元素0&1),然後在第一行單擊刪除,只剩下一行。當我向控制器提交時,我仍然看到兩個元素髮送給我的控制器。它似乎是第一個元素是「原始」第二行(這是有道理的,因爲第1行被刪除)。但它也將數組中的第二個元素髮送到控制器,但沒有設置任何屬性。我把一些代碼簡單地忽略這個元素(類型的黑客),但不知道爲什麼這個元素被傳遞的第一個地方,因爲我刪除第一行後,我應該只有一個元素 – leora 2009-12-24 17:01:48

0

也可以加入像

<input type='hidden' name='updater.managers.Index' value="0" />

一個隱藏的輸入字段對於每個列表,這回發到模型綁定爲指標的形式列表[ 0,2,3 ...]。集合模型聯編程序將遍歷這些索引,而不是「嘗試」連續索引。

.Index字段的值可以是數字或字符串。

有關詳細信息,請參閱本博客文章的最後一部分: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

相關問題