InternetExplorerでのHTML5未対応から、Form外の<input form>要素の取得が不可能なため、以下のようなソースを作成しました。
テーブルの1行に1送信ボタンがあるhtmlソース
html
1<table> 2 <tr> 3 <td>お名前</td> 4 <td>ご住所</td> 5 <td>送信ボタン</td> 6 </tr> 7 <tr> 8 <td><input name="name" type="text" form="hogehoge1"></td> 9 <td><input name="address" type="text" form="hogehoge1"></td> 10 <td> 11 <form id="hogehoge1" action="fuga.php" method="post"> 12 <input class="submit_btn" type="submit" value="送信"> 13 </form> 14 </td> 15 </tr> 16 <tr> 17 <td><input name="name" type="text" form="hogehoge2"></td> 18 <td><input name="address" type="text" form="hogehoge2"></td> 19 <td> 20 <form id="hogehoge2" action="fuga.php" method="post"> 21 <input class="submit_btn" type="submit" value="送信"> 22 </form> 23 </td> 24 </tr> 25</table>
JavaScriptソース(jQueryを利用しています)
js
1$(document).ready(function() 2{ 3 //送信ボタンが押されたときのドリブン 4 $(".submit_btn").on("click", function() 5 { 6 var form = $(this).parents("form");// ボタンを内包している親formを取得 7 var formName = form.attr("id");// フォームの名前(ID)を取得 8 9 //input要素で、form名が同一なものを取得しつつそのinput部品数だけform内へinput(hidden)要素を作成 10 $("input[form='" + formName + "']").each(function() 11 { 12 //上で取得したform内部へ、同名のinput部品の作成 13 form.append("<input type='hidden' name='" + $(this).attr("name") + "' value='" + $(this).val() + "'>"); 14 }); 15 }); 16});
以上でJavaScriptの最後に「return false;」で処理を止め、console.logで確認したところ、どうにかformタグ内部へ所定のデータを収めることができました。
ここで今度はサーバー側(php)でデータを確認したところ
php
1array( 2 'name' => '', 3 'address' => '' 4)
と、データが送られてきません。
何が問題なのかさっぱり手詰まってしまったので、気になったことありましたらご指摘お願いします。
追記:
あれ??!
すいません。
今このコードで行ったら動いてます・・・
今書いているソースコードを極力シェイプして書いたんですが、この状態だと実際動かしたら動いてました。
実際はCakePHPで動かしているので、他のなにかが悪さしているのかもしれません。
ちょっと問題部分もう少し悩んでみますm(_ _)m
回答4件
あなたの回答
tips
プレビュー