1

ボタンのクリックで新しい行を追加しようとしています。新しい行には、datepicker をバインドしたいがバインドできない Textbox が 1 つあります。この問題を解決するのを手伝ってください。

<table>
     <tr>
     <td><button type="button" onClick ="addRow(this)">Add</button></td>
     </tr>
     <tr>
     <td><input type="text" name="installDate" value="" class ="date"/> </td>        
     </tr>
</table>

JavaScript

$(document).on('click', function() {
$('.date').each(function() {
        $(this).datepicker();
});
});

function addRow(btn) {         
    var parentRow = btn.parentNode.parentNode;
    var table = parentRow.parentNode;
    var rowCount = table.rows.length;
    var lastRow = table.rows[rowCount - 1];
    var rowClone = lastRow.cloneNode(true);
    table.appendChild(rowClone);
    $('.date', rowClone).datepicker(); // Code to fix the problem
}

Seq1: 行を追加 => newRow のテキストボックスをクリックすると、カレンダーがポップアップし、すべて正常に動作します。

Seq2: 1. ドキュメントをクリックし、元の行のテキストボックスを試すと、カレンダーがポップアップします。2. 新しい行を追加します。3.新しい行のテキストボックスをクリックすると、カレンダーがポップアップして日付を選択することはありません。

参照用に JSFiddle を添付 http://jsfiddle.net/wAyhm/9/

4

1 に答える 1

1

これはあなたが探しているものです:

jQuery UIウィジェットによってバインドされた要素を複製する方法は?

ワーキングフィドル:

http://jsfiddle.net/Meligy/DKtA6/6/

window. addRow = function addRow(btn) {         
    var parentRow = btn.parentNode.parentNode;
    var table = parentRow.parentNode;
    var rowCount = table.rows.length;
    var lastRow = table.rows[rowCount - 1];
    var lastDatePicker = $('.date', lastRow);
    var rowClone = $(lastRow).clone(true);
    var datePickerClone = $('.date', rowClone);
    var datePickerCloneId = 'test-id' + rowCount;
    datePickerClone.data( "datepicker", 
        $.extend( true, {}, lastDatePicker.data("datepicker") ) 
    ).attr('id', datePickerCloneId);
    datePickerClone.data('datepicker').input = datePickerClone;
    datePickerClone.data('datepicker').id = datePickerCloneId;
    $(table).append(rowClone);
    datePickerClone.datepicker();
}
于 2013-06-25T03:22:18.297 に答える