0

新しい行を追加するためのボタンがあるテーブルがあります。この新しい行が追加されると、フィールドRS_Staff_Title1はRS_Staff_Title2などにインクリメントされます。このボタンは、別のテーブルに行を追加することもできます。

次に、この関数を使用して、入力時にRS_Staff_Title1の内容をこの他のテーブルのフィールドにコピーします。

$("#RS_Staff_Title1").keyup(function() {
        var value = $(this).val()
        $("p").text(value);
    }).keyup();

ただし、達成する必要があるのは、StaffTableのRS_Staff_Title1のコンテンツをResourceTableのRS_Staff_Title1などにコピーすることです。ただし、多くの増分が行われます。

アップデート:

Staffテーブルの行のHTMLは次のとおりです。

<tr>
<td><input id="RS_Staff_Title1" name="RS_Staff_Title1" style="width:100%;"></td>

両方のテーブルに行を追加するJSは次のとおりです。

$("#add_row").click(function() {
    var row = $("#staff tbody > tr:last"),
        newRow = row.clone(true);
    newRow.find("input").each(function() {
        var num = +(this.id.match(/\d+$/) || [0])[0] + 1;
        this.id = this.id.replace(/\d+$/, "") + num;
        this.name = this.id;
    });
    newRow.insertAfter(row);
    return false;
});
$("#add_row").click(function() {
    var row = $("#resource-cost tbody > tr:last"),
        newRow = row.clone(true);
    newRow.find("input").each(function() {
        var num = +(this.id.match(/\d+$/) || [0])[0] + 1;
        this.id = this.id.replace(/\d+$/, "") + num;
        this.name = this.id;
    });
    newRow.insertAfter(row);
    return false;
});
4

1 に答える 1

0

keyup新しい行ごとにイベントをバインドしないようにするには、 .live.on最新のjQueryで)使用して一度だけ追加し、追加された新しいアイテムに対して機能させることができます。さらに、ID は一意である必要があり、ID RS_Staff_TitleN を持つ 2 つの要素を持つことはできません。RS_Staff_Title 要素にクラスを配置し、次のようにキーアップ ハンドラーをバインドします。

$(document).on("keyup", ".StaffTableTitle", function() {
    var value = $(this).val()
    var id = $(this).data("rowindex");
    $(".ResourceTableTitle #RT_Staff_Title" + id + " p").text(value);
}); 

RT_Staff_Title - 一意の ID を持つために ResourceTable の RS_StaffTitle に推奨される ID

.data("rowindex");作成時に新しく追加された rs_staff_title 要素に対してこのように設定する必要があり.data("rowindex", index)ます (ID から取得するよりもそこから取得する方が簡単で、後で ResourceTable で対応する要素を見つける必要があります)。

newRow.find("input").each(function() {
        var num = +(this.id.match(/\d+$/) || [0])[0] + 1;
        this.id = this.id.replace(/\d+$/, "") + num;
        $(this).data("rowindex", num);
        this.name = this.id;
    });
于 2012-10-03T09:06:43.870 に答える