2009-12-09 58 views
0

當我的函數被調用時,如何重新排序輸入?如何通過更改屬性來重新排列我的輸入字段?

ie:現在點擊a2刪除按鈕時,我有a1,a3和a4我想對此重新排序,以便它是a1,a2(是a3)和a3(是a4)。我知道如何手動執行此操作,但是如何動態編寫它?

腳本:

 
    
    $(function(){ 
     $('.deleteMe').click(function(){ 
      $(this) 
       .parent() 
       .parent() 
       .remove(); 
      //rename the attribute 
      ??? 
      $('#a3').attr('name', 'a2') //a3 becomes a2 
      $('#a4').attr('name', 'a3') //a4 becomes a3 
      return false; 
     }); 
    }); 
    

下面是HTML:

<form name="myform" id="myform" method="post"> 
<table> 
<tr> 
    <td><input type="text" name="a1" id="a1" /></td> 
    <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a1" /></td> 
</tr> 
<tr> 
    <td><input type="text" name="a2" id="a2" /></td> 
    <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a2" /></td> 
</tr> 
<tr> 
    <td><input type="text" name="a3" id="a3" /></td> 
    <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a3" /></td> 
<tr> 
</tr> 
    <td><input type="text" name="a4" id="a4" /></td> 
    <td><input type="button" class="deleteMe" name="deleteMe" id="deleteMe" value="a4" /></td> 
</tr> 
</table> 
</form> 

回答

1

如果你可以很容易地通過所有這些選擇所有的投入,只是循環和重命名。

container = $(this).parent().parent().parent(); 
// (delete input) 
$(container).find("input:text").each(function(index) { 
    $(this).attr("name", "a" + index); 
}); 

但是問題出現了,爲什麼你需要這樣做呢?你可以給他們所有的同名,並且大多數服務器網站的東西應該能夠給你一個值列表。

+0

馬蒂,多謝! 在我正在處理的程序中,我實際上有一個輸入文本和複選框相鄰。我不知道哪個複選框屬於什麼,如果他們不是全部檢查。 – nolabel 2009-12-09 18:45:31

2

添加class="renameable"到每個這些輸入字段,然後做這樣的事情:

$(function(){ 
    $('.deleteMe').click(function(){ 
    $(this).parent().parent().remove(); 
    $('#myForm').find('.renameable').each(function(i){ 
     $(this).attr('name', 'a'+i); 
    }); 
    return false; 
    }); 
}); 
相關問題