2012-04-04 21 views
0

私は、ユーザーが望む数のテキストフィールドを動的に追加する必要があるフォームを用意しています。たとえば、テキストフィールドを配列にしたいとします。動的にHTML配列要素を追加する方法[]

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

私はすでにうまくいくと思ったものを作りました。それはより多くのテキストボックスを追加します。私は、PHPファイルにそれを掲示するとき、それは最初の値のみを取得し、

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

しかし:私はこのような形の外観を作り、動的にJavaScriptを使用してさらに2つのテキストボックスを追加しました。私はこれが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"); 
}); 
+1

あなたは、HTTPトランザクションがどのように見えるかを確認するためにチェックする必要があります。 [Tamper Data](http://goo.gl/1AES9)のようなFirefoxプラグインを使用すると、フォームを送信するときの発信HTTPリクエストの正確な状態を確認できます。入力要素がページに表示されている場合は、これがJavaScriptの問題である可能性は非常に低いです。 – Pointy

+2

入力 'room_text []'の名前属性が正しく設定されていることを確認してください...それらがすべて同じであれば、上記の動作が発生します – xandercoded

+0

PHPのパラメータ配列名 '[]'一緒に処理していますか?おそらく、フォームの外にテキスト入力し、その値を送信時に収集し、それらの値を(隠された)入力(フォーム内)に照合してサーバーに送信します。 –

答えて

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"); 
});​ 
+0

IEの古いバージョンと' .clone() 'には既知の問題があります。 –

+0

あなたが私に送るコードを試しました、それは同じことをやっています、最初の要素だけを読み込みます –

+0

同じコードが私のために働く - http://timothyaaron.com/test.php。あなたはあなたのPHPではないと確信していますか? –

関連する問題