HTML5にてtableの行ごとにFormを作成して、それぞれの値でSubmitで値をPOSTしたいと考えております。
まずは下記のようにHTMLを書いて実行した場合、正常に動作しました。
html
1<table class="table table-bordered"> 2<!-- テーブルヘッダー --> 3<thead> 4 <tr class="active"> 5 <th>ID</th> 6 <th>種類</th> 7 <th>名前</th> 8 <th> </th> 9 </tr> 10</thead> 11<!-- テーブルボディー --> 12<tbody id="tbody"> 13 <form action="/test/test.php" method="post" name="list" id="list"> 14 <tr> 15 <td class="table-text"><div><input type="hidden" name="id" value="1"> 1</div></td> 16 <td class="table-text"><div><input type="hidden" name="type" value="猫">猫</div></td> 17 <td class="table-text"><div><input type="hidden" name="name" value="にゃんすけ">にゃんすけ</div></td> 18 <td><button class="btn btn-lg btn-primary" name="" value="cat" type="Submit">取得</button></td> 19 </tr> 20 </form> 21 <form action="/test/test.php" method="post" name="list1" id="list1"> 22 <tr> 23 <td class="table-text"><div><input type="hidden" name="id" value="2">2</div></td> 24 <td class="table-text"><div><input type="hidden" name="type" value="犬">犬</div></td> 25 <td class="table-text"><div><input type="hidden" name="name" value="わんすけ">わんすけ</div></td> 26 <td><button class="btn btn-lg btn-primary" name="" value="cat" type="Submit">取得</button></td> 27 </tr> 28 </form> 29</tbody> 30</table>
上記のように<tr>タグを<form>タグで括って予定通り送信したデータも分けて実行できたのですが
このtableの中身をJavascript(Jquery?)で追加していく形で下記のように書きました。
html
1<table class="table table-bordered"> 2 <!-- テーブルヘッダー --> 3 <thead> 4 <tr class="active"> 5 <th>ID</th> 6 <th>種類</th> 7 <th>名前</th> 8 <th> </th> 9 </tr> 10 </thead> 11 <!-- テーブルボディー --> 12 <tbody id="tbody"> 13 </tbody> 14</table> 15<button type="button" class="btn btn-lg btn-primary" onclick="test_append();"/> 16
javascript
1function test_append(){ 2 $('#tbody').append('<form action="/test/test.php" method="post" name="list1" id="list1"></form>'); 3 $('#list1').append('<tr id=tr1></tr>'); 4 $('#tr1').append('<td class="table-text"><div><input type="hidden" name="id" value="1"> 1</div></td>'); 5 $('#tr1').append('<td class="table-text"><div><input type="hidden" name="type" value="猫">猫</div></td>'); 6 $('#tr1').append('<td class="table-text"><div><input type="hidden" name="name" value="にゃんすけ">にゃんすけ</div></td>'); 7 $('#tr1').append('<td><button class="btn btn-lg btn-primary" name="" value=type="Submit">取得</button></td>'); 8}
上記のように表示が崩れてしまいます。
他にも"</form>"を最後に括ったり、"<form>"と"<tr>"を同じ親の要素に並べてみたりやってみたのですが、期待の挙動になるものはありませんでした。
始めからHTMLにて記載しておく方法とJavaScriptにて追加していくやり方ではなぜ違う挙動になるのでしょうか?
また、私のように行ごとにデータをSubmitしたい場合どのように行うのが一般的なのでしょうか?
(そもそも行ごとにSubmitすることはよくないこと?)
勉強始めでわからないことばかりで的外れな質問かもしれませんが、よろしくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。