0

jqueryを使ってシンプルなフォームを作ろうとしています。フォームを作成するということは、クリックされたボタンに基づいて投稿する準備ができている入力をまとめているということです。

たとえば、私はそのような変数を持っているかもしれません...

var1 = "<input type='text' value='some product' />";

関連するボタンをクリックすると、htmlが同じものに追加されます。ショッピングカートに少し似ています。

私が抱えている問題はこれです。順番に番号を付ける必要があるため、入力がリストに追加されると、関連するインデックス番号が作成されるため、最終的には

<input id="number1" type="text" />
<input id="number2" type="text" />
<input id="number3" type="text" />
<input id="number4" type="text" /> etc etc...

var = count++ を使用しただけです。問題は、リストから項目を削除する機能が必要な場合です。$(this).parents('tr').remove(); を使用して、リストからそれらを削除しています。

ただし、リストの中央から 1 つを削除すると、番号は連続しません。したがって、私の質問は、これらの番号を連続したものにするにはどうすればよいかということです。そもそも数値を追加する方法ですか、それともカウント変数の以前のインスタンスを「再訪」する方法はありますか?

私がここで試したことの例を挙げることはできません.Imは完全に途方に暮れています. 私はインターネットを精査しましたが、何が可能かどうかはよくわかりません。

私はここで怠け者ではなく、解決策を提供してくれる人を探していますが、正しい方向に私を向けることができれば、それは素晴らしいことです.

4

1 に答える 1

0

実際、私はこの問題が非常に興味深いものであることがわかったので、時間をかけて答えを作成しました。

私は特別なjqueryプラグインがあなたを助けることができると思います. 使用例は、このフィドルにあります: http://jsfiddle.net/FJRNh/

仕組み:

  • 「プレフィックス」部分を分離します-あなたのケース番号
  • id が接頭辞で始まる、選択した要素のすべての兄弟を検索します
  • 必要な要素を削除します
  • 兄弟の番号を付け直します

欠点が 1 つあります。以前に番号が付けられていなかった場合でも、同じプレフィックスを持つすべてのアイテムの番号が付け直されるため、number1、number2、number3、number_foot などの ID がある場合、number_foot も付け直されます。これは、内側のループに正規表現テストを追加することで回避できます。しかし、この制限を念頭に置いておけば、提供されたコードで十分だと思います

(function ($) {
    $.fn.renumberingRemove = function () {
        var $this = $(this);
        var mthisid = $this.attr('id');
        var name = $this[0].nodeName;
        var numberp = /\D+/.exec($this.attr('id'));              
        var sibl = $this.parent().children(name+"[id^='"+numberp+"']");
        $this.remove();
        var istart = 1;
        sibl.each(function () {      
            if (this.id != mthisid) {
                $(this).attr('id', numberp + istart++);
            }
        });        
    };
})(jQuery);
于 2013-02-22T08:57:21.923 に答える