2

以下のHTMLテーブルは私のPHPコードで生成され、最大500以上までの任意の数の行を持つことができます。

<table>
    <tr>
        <th>Name</th>
        <th>Working</th>    
        <th>Non-Working</th>    
        <th>Top Working Rate</th>
    </tr>
    <tr>
        <td>DX</td>
        <td><input type="text" name="items[4357][1]" value="1.00"></td>
        <td><input type="text" name="items[4357][2]" value="1.00"></td>
        <td>None</td>
    </tr>
    <tr>
        <td>Kindle</td>
        <td><input type="text" name="items[4358][1]" value="1.00"></td>
        <td><input type="text" name="items[4358][2]" value="1.00"></td>
        <td>None</td>
    </tr>
    <tr>
        <td>Kindle 2</td>
        <td><input type="text" name="items[4359][1]" value="1.00"></td>
        <td><input type="text" name="items[4359][2]" value="1.00"></td>
        <td>None</td>
    </tr>
    <tr>
        <td>Kindle 2 3G</td>
        <td><input type="text" name="items[4360][1]" value="1.00"></td>
        <td><input type="text" name="items[4360][2]" value="1.00"></td>
        <td>None</td>
    </tr>
    <tr>
        <td>Kindle 3 3G</td>
        <td><input type="text" name="items[4361][1]" value="1.00"></td>
        <td><input type="text" name="items[4361][2]" value="1.00"></td>
        <td>None</td>
    </tr>
    <tr>
        <td>Kindle Fire</td>
        <td><input type="text" name="items[4362][1]" value="1.00"></td>
        <td><input type="text" name="items[4362][2]" value="1.00"></td>
        <td>60.00</td>
    </tr>
    <tr><td><input type="submit" value="Save Rates"></td></tr>
</table>

リンクまたはボタンをクリックして、4列目の値を2列目の入力値にコピーしたいと思います。値が「None」の場合、行はコピーされません。できれば、このソリューションを使用すると、コピー元/コピー先の列をパラメーターとして渡すことができますが、必要に応じて調整できます。

明らかに、より大きなテーブルで作業する場合、コードは遅くなる可能性がありますが、エンドユーザーはある程度の遅延が予想されます。

4

2 に答える 2

2

あなたはこれを試すことができます:

$('input[type=submit]').on('click', function(e) {
    e.preventDefault();
    $('tr').each(function() {
        var $this = $(this),
            prc = $this.find('td').eq('3').html();
        if (prc !== 'None') {
            $this.find('td').eq('1').find('input').val(prc);
        }
    });
});​

FiddleSticks

于 2012-12-20T20:15:28.470 に答える
1
$("#mybutton").click(function(e) {
    e.preventDefault();
    $("table").children("tbody").children("tr").each(function(i, row) {
        var cols = $(row).find("td");
        if (cols.length > 0 && $(cols[3]).text() != 'None') { /* skip rows with only <th> */
            $(cols[1]).find("input").val($(cols[3]).text());
        };
    });
});

フィドル

于 2012-12-20T20:15:21.010 に答える