0

ユーザーが望むだけ多くのテキスト フィールドを動的に追加する必要があるフォームがあります。テキストフィールドを配列にしたい、例えば:

<input type="text" name="room_text[]">

私はすでにうまくいくと思ったものを構築しました。テキスト ボックスが正常に追加されます。javascript を使用してさらに 2 つのテキスト ボックスを動的に追加し、フォームを次のようにしました。

<input type="text" name="room_text[]">
      <input type="text" name="room_text[]">
      <input type="text" name="room_text[]">

しかし、それを PHP ファイルに投稿すると、最初の値しか取得されません。これが JavaScript の問題であることがわかっている理由は、ページの読み込み時に複数のテキスト ボックスがある場合に問題なく動作するためです。javascriptでテキストボックスを追加したときだけです。

これが役立つ場合、これはボックスを追加するために使用する jquery 関数です。

$('.add').live("click", function() {
    var mu = $(this).parent('td').parent('tr');
    var clone = $(this).parent('td').parent('tr').clone();
    $(clone).children('td').children('.add').remove();
    $(clone).children('td').children('.redtext').remove();
    $(clone).children('td').children('.remove').css("display", "inline");
    $(clone).css("display", "none");
    $(mu).after(clone);
    $(clone).show("fast");
});
4

1 に答える 1

1

問題は.clone()機能にあると思います。別の方法を試してみてください、たとえば...

$('.add').live("click", function() {
    var mu = $(this).parent('td').parent('tr');
    var clone = '<tr>' + $(this).parent('td').parent('tr').html() + '</tr>';
    $(clone).children('td').children('.add').remove();
    $(clone).children('td').children('.redtext').remove();
    $(clone).children('td').children('.remove').css("display", "inline");
    $(clone).css("display", "none");
    $(mu).after(clone);
    $(clone).show("fast");
});

更新-おっと。そのバージョンでは、「クローン」は要素ではなく文字列であるため、.children()関数は機能していません...修正されたバージョンは次のとおりです。

$('.add').live("click", function() {
    var mu = $(this).parent('td').parent('tr');
    var clone = $('<tr>' + $(mu).html() + '</tr>');
    $(clone).children('td').children('.add').remove();
    $(clone).children('td').children('.redtext').remove();
    $(clone).children('td').children('.remove').css("display", "inline");
    $(clone).hide();
    $(mu).after(clone);
    $(clone).show("fast");
});​
于 2012-04-04T14:15:41.537 に答える