0

PHP と Javascript を使用して、繰り返し可能なフィールドをいくつか作成しようとしています。これは問題なく動作しますが、投稿を保存した後 (WordPress のプラグインを作成)、複製された行が最新の行を上書きします。これは、各行に一意の ID を使用していないためです。

javascript を使用して「id」属性を追加したいのですが、id 1 の増加で作成された行ごとに必要です。私はすでにPHPで同様のことを行っていましたが、これは私が望んでいたものではなく、「新規追加」ボタンでフィールドを複製すると金額が増加しないため、javascriptを使用したほうがよいことがわかりました+1;

使用したphpコードは次のとおりです。

$count = 2;
for ($i = 0; $i < $count; $i++) {

    // Begin a table row
    echo '<tr class="row" id="' . '['.$i.']' . '-repeatable">';
    echo '<td class="order">' . '['.$i.']' . '</td>';

            // Do cool stuff inside the row

    echo '<td class="remove"><a class="repeatable-remove button" href="#">-</a></td>';
    echo '</tr>'; // End .row

} // End for loop

<a href"#" class="button">Add new row</a>

繰り返し可能なフィールドの JS コード:

// Add repeatable row
jQuery('.repeatable-add').click(function() {
    // Clone row
    var row = jQuery(this).closest('.ui-sortable').find('tbody tr.row:last-child');
    var clone = row.clone();

    clone.find('input[type=text], text, textarea, select, input.upload_image').val(''); // Reset the values
    clone.find('.preview_image').attr('src', ''); // Reset the values

    row.after(clone);

    //
    return false;
});

この行のスニペットのようなことをしなければならないと思います:

clone.find('tr.row').attr('id', 'repeatable-' + addInteger);

しかし、PHP での例のように、Jquery/Javascript 内で +1 を増やすにはどうすればよいですか?

4

1 に答える 1

1

あなたがしたいことは、複製している行の ID を見て、その ID を使用して新しい行に適切なインデックス値を与えることです。例に 2 行のコードを追加しました。1 行は新しい変数を定義し、もう 1clonedIdIndex行はその変数の値を使用して複製された行の新しい ID を定義します。

jQuery('.repeatable-add').click(function() {
    // Clone row
    var row = jQuery(this).closest('.ui-sortable').find('tbody tr.row:last-child'),
        clone = row.clone(),
        clonedIdIndex = parseInt( clone.find('tr.row').attr('id').split('-')[1], 10 );

    clone.find('input[type=text], text, textarea, select, input.upload_image').val('');    
    clone.find('.preview_image').attr('src', ''); // Reset the values

    // Assign new ID
    clone.find('tr.row').attr('id', 'repeatable-' + (++clonedIdIndex));

    row.after(clone);

    //
    return false;
});
于 2013-01-20T16:18:23.333 に答える