質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

3865閲覧

フォームの間に別のフォームを挿入する

kenkbou

総合スコア151

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2016/02/28 15:46

編集2016/02/29 00:42

よくある問い合わせフォームがあります

HTML

1<form id="formform" method="post" action="form.php"> 2 <input type="text" name="name" /><br /> 3 <input type="tel" name="email" /><br /> 4 <input type="fax" name="tel" /><br /> 5 <input id="submitsubmit" type="submit" value="送信" /> 6</form>

これの『送信』ボタンが押された際にjavascript(jQuery)で
別のフォームをポップ(モーダルウィンドウ?iframe?)で出したいと思っています。

そのフォームにも同様に入力して、submitが終わったら元のフォームもsubmitされるというようにしたいです。

本体のhtmlには手を加えず、JSのみでファイルを読み込むだけで実装したいと考えております。

どのような手順で開発したらよいか、
もしくは何か既存のドキュメント等があれば、
お教えいただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

JavaScriptでHTML生成できるので、まずはjQueryなどをつかって、

  1. form#formformが送信されたときにイベントでポップアップするように関数定義
  2. 元HTML側でSubmitされたらform#formform内のデータをすべてinput[type=hidden]としてコピー
  3. 改めて新しいformを生成する(コピーしたデータも含める)
  4. ポップアップ側で送信すると全データが送信される

という流れですかね。

案外シンプルかと。

投稿2016/02/29 01:14

ogaaaan

総合スコア765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenkbou

2016/02/29 01:51

ご回答ありがとうございます。 流れにしてみるとすごくシンプルで理解出来ました。ありがとうございます。 本体フォームとポップフォームの送信先はそれぞれ別にしたいと思っています。 同じ流れで実装可能でしょうか? イメージとしては本体フォームのsubmitが押されたらポップフォームが出て(本体submitは遅延?一時停止?)、ポップのsubmitを押したらポップを送信・閉じる、停止していた本体のフォームも自動でsubmit みたいな流れです。 なんどもすみません。
ogaaaan

2016/02/29 02:07 編集

`$('#formform').submit();` で元フォームを送信、 ポップアップ側は `$('#popform`).submit();` などすれば送信できるので、 2のコピー処理はせずに、別々にやれば問題ないすよ。 ただ、できれば二つが同じデータという意味も持たせておきたいので、 両者にhiddenで同じ名前のID振っておくのがよいですね。 そうすれば、受け取る側で2つが同じデータだってわかるので。
kenkbou

2016/02/29 03:30

ありがとうございます! 流れが完全に理解できました。
guest

0

少し面倒ですが

  • submitする<form>を1つだけにする
  • submitする<form>に、もう一つのフォームの各フィールドを保持する<input type="hidden">を仕込む
  • onsubmitなどのイベントで、値をコピーする

なのはいかがでしょうか。

最後のModalでsubmitする例

html

1<form id="formform"> 2 <input type="text" name="name" /><br /> 3 <input type="tel" name="email" /><br /> 4 <input type="fax" name="tel" /><br /> 5 <input id="submitsubmit" type="submit" value="送信" /> 6</form> 7 8<div id="dlg"> 9 <form id="dlgform" method="post" action="form.php"> 10 <input type="text" name="addition_feield" /> 11 12 <input type="hidden" name="name" /><br /> 13 <input type="hidden" name="email" /><br /> 14 <input type="hidden" name="tel" /><br /> 15 16 <input id="submitsubmit" type="submit" value="送信" /> 17 </form> 18</div>

javascript

1 2// ページ読み込み時に遅延実行 3$(function() { 4 5 // ダイアログには、jQuery-UIを使うのかな? 6 // @see https://jqueryui.com/dialog/ 7 $('#dlg').dialog({/* options... */}); 8 9 // 問い合わせフォームのsubmitイベントハンドラ 10 $('#formform').submit(function(e) { 11 e.preventDefault(); // 遷移の抑止 12 $('#dlg').dialog('open'); 13 }); 14 15 // dialogのsubmitイベントハンドラ 16 $('#dlgform').submit(function(e) { 17 /* コピーを実行するコード */ 18 }); 19});

投稿2016/02/28 16:38

編集2016/02/28 16:40
packpak

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kenkbou

2016/02/29 00:37

ご回答ありがとうございます。 同時に私の質問が悪かったことお詫びいたします。 今回、本体htmlには手を加えることなく、JSのみで実装したいと考えております。 別ファイルにして本体でJSを読み込むだけで実装ができるというのは難しいのでしょうか・・・? すみませんが、よろしくお願い致します。
packpak

2016/02/29 01:41

なるほど、納得です(笑) もう1人の回答者さんの言うように、jQueryで柔軟に出来ます。 ぐぐればいくらでも出てきますよ! ひとつになることがあって、 モーダルっていうのは、confirm関数でできる程度のことなのかな? (俗に言うポップアップウィンドウならば、モードレスのはずですが・・・。) jQuery-UIのダイアログ相当のものを求められてて、それをJavaScriptだけで実装しようとしているのなら・・・。 ちょっと、頑張らなければいけません!(JavaScriptで文字列結合ガリガリ) 参考)https://jqueryui.com/dialog/ でも保守性は最悪なはずで、もしかしたら、HTMLの変更を許されるかもしれません。 ワンチャンスありそうなら、どっちがいいか相談してみてはいかがでしょうか?
kenkbou

2016/02/29 03:28

ありがとうございます! とてもよく分かりました。 保守性の面も気にする必要があるのですね。 作業の流れはわかりましたので、一度実装してみようとおもいます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問