2013-07-19 105 views
1

我想弄清楚如何使用文本框的值重新排列uljQuery - 通過更改文本框的值重新排序列表

開始用ul ....

<ul id="ItemList"> 
    <li> <some text> <input id="Text1" type="text" value="1" /></li> 
    <li> <some text> <input id="Text2" type="text" value="2" /></li> 
    <li> <some text> <input id="Text3" type="text" value="3" /></li> 
    <li> <some text> <input id="Text4" type="text" value="4" /></li> 
</ul> 

那麼,如果我的Text44值更改爲2名單將重新排序本身而改變text2 & 3值分別3 & 4

我懷疑我不是第一個必須這樣做,所以如果有指針可用。

我在這裏找不到任何具體的東西,但我可能沒有找到正確的東西。

+2

你到目前爲止嘗試過什麼? –

+0

給我們展示一些你寫過的jquery嗎? – Krishna

+0

所以,如果你改變其中一個tb的值,你想改變其他文本框的文本?另外,它是靜態列表還是動態的? – Learner

回答

1

這裏有一個快速的方法來做到這一點(沒有錯誤檢查):

$('input').keyup(function() { 
    var start = $(this).index('input'); 
    var target = $(this).val() - 1; 
    if (target < start) $(this).parent().insertBefore($('li').eq($(this).val() - 1)); 
    if (target > start) $(this).parent().insertAfter($('li').eq($(this).val() - 1)); 
}); 

jsFiddle example

需要注意的是要重新編號變更後的輸入,此行添加到末尾的功能$('input').each(function(){$(this).val($(this).index('input')+1)});

+0

這對於排序很合適,但他希望它也可以更新整個鏈中的值。它需要第二個功能(可能最好在第一個之後立即運行)。也不適用於複製/粘貼,奇怪地用兩位數字工作。 –

+0

@BenBarden - 我的答案的註釋中的代碼是否解決了您對更新的關注?我不確定你所指的是什麼。至於複製/粘貼和兩位數字,一旦主要訂單得到滿足,這些都是次要的細節。 – j08691

+0

公平 - onkeyup kibitz只是一個kibitz。可能仍然會更好,而不是一個onkeyup。除此之外,是的 - 它幾乎涵蓋了它。我沒有測試過,也不能告訴你它是否可以做它想做的事情,但它看起來像你有所有你需要的移動部件。 –