0

ユーザーが行を動的に追加できるテーブルがあります。フィールドの 1 つである my date フィールドは、追加されるすべての行で同じでなければなりません。すべての追加行で日付フィールドのクローンを作成し、作成された行でそのフィールドを読み取り専用にしましたが、ユーザーが最初に戻った場合にコードを追加できる方法があるかどうか疑問に思っています行を変更して領収書の日付を変更すると、ユーザーが追加したすべての行も新しい日付に更新されます。

<table border="0" width="825px" cellspacing="0" cellpadding="5" name="receipts" id = "receipts">
<thead>
    <tr>
        <th class="colheader" width="125px">Receipt #</th>
        <th class="colheader" width="120px">Date</th>
        <th class="colheader" width="120px">Category</th>
        <th class="colheader" width="120px">Description</th>
        <th class="colheader" width="120px">Amount</th>
        <th class="colheader" width="145px"><span class="boldblacklinks"><a href="#" id="add">[Add +]</a></span></th>
    </tr>
</thead>
    <tbody class="lineBdy">
        <tr id="line_1" class="spacer">
            <td><input type="text" class="receipt fieldclasssm" id="recLineReceipt[]" name="recLineReceipt[]" size="7" value = "<?=$receiptNumber?>"/></td>
            <td><input type="text" class="date fieldclasssm" id="recLineDate[]" name="recLineDate[]" size="10" value = "<?=date("m/d/Y", strtotime($today))?>"/></td>
            <td><select name="selectCategory[]" class="fieldclasssm">
                        <option value = "">Select a Category...</option>
                        <?php //Get Categories

                        $getCats = mysql_query("SELECT id, nominalName FROM expense_nominalCodes ORDER BY id") or die("Get Cats: " . mysql_error());

                        if(mysql_num_rows($getCats) > 0)
                            {
                            while($catData = mysql_fetch_array($getCats))
                                {
                                echo '<option value = "'.$catData['id'].'">'.$catData['nominalName'] . '</option>';
                                }
                            }
                        ?>
                </select>
            </td>
            <td><input type="text" class="lineDescr fieldclasssm" name="recLineDescr[]" id="recLineDescr[]" value = "<?=$_POST['recLineDescr']?>" size="40" /></td>
            <td colspan = "2"><input type="text" class="amt fieldclasssm" name="recLineAmount[]" id="recLineAmount[]" value = "<?=$_POST['recLineAmount']?>" size="12" /></td>
        </tr>
    </tbody>
</table>
<div align="center"><br /><br /><input type="submit" name = "saveAdd" class="btn" value = "Save & Add Another Receipt" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" name = "saveAdd" class="btn" value = "Save as Draft" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" class="btn"name="saveDraft" value = "Save & Finalize Expense Report" /><br /><br /></div>

<script type="text/javascript">

//Add new table row & clone date field
$('#add').on('click', function(){
   addReceiptItem();
    $('.date').focus(function() {
        $(this).select();
    });
    $('.receipt').focus(function() {
        $(this).select();
    }); 
});

function addReceiptItem(){
     var lastID = $('tr[id*="line_"]').length,    
         newTds = $('tr[id="line_' + lastID + '"] td').clone(),
         newRow = document.createElement('tr');

    // add new id and class to row, append cloned tds
    $(newRow)
        .attr('id', 'line_' + (lastID + 1 ))
        .attr('class', 'spacer')
        .append(newTds);

    //empty out the fields, except the one you want to keep populated
    // $(newRow).find('input').not(':eq(0)').val('');

     // $(newRow).find('input').not(':eq(0)').val('');


    $(newRow).find('input').not(':eq(0)').not(':eq(0)').val('');
    $(newRow).find('class').not(':eq(0)').not(':eq(0)').val('');

    //add the new row to the table body
    $('tbody.lineBdy').append(newRow);
    $('.receipt').attr('readonly', true);
    $('.date').attr('readonly', true);
    };  
4

1 に答える 1

0

これらのフィールドすべてにdateクラスがある場合、次のようなものを呼び出すことができます

$('#someUpdateButton').click(function(){
  $('.date').val($('.date:nth-of-type(1)').val())
});

働くフィドル

于 2013-07-01T17:38:22.970 に答える