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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1695閲覧

Googleフォームで送信後にページ遷移をせずにメッセージを出したい

yotubarail

総合スコア23

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/11/19 07:56

Googleフォームをカスタマイズして自分のサイト設置しようと考え、こちらのサイトを参考に進めていきました。
しかし、データの送信はできたもののHTMLのrequiredが機能しなくなり、どうやらsubmitすると効かなくなってしまうらしいということがわかりました。
JavaScriptがわからないなりに考え、ダミーのボタンが押されることでデータ送信用のボタンも押される処理を書いたのですが「Uncaught Could not establish connection. Receiving end does not exist.」というエラーが出てしまいました。

データの送信はできるものの、「お問い合わせありがとうございました」というメッセージが出ない状態です。

該当部分のコードは以下の通りです。

HTML

1<div id="form"> 2 <form action="https://docs.google.com/forms/u/0/d/e//formResponse" method="post" name="myForm" class="text-center" target="dummyIframe"> 3 <label>メールアドレス(必須)</label> 4 <p> 5 <input type="email" name="emailAddress" value="" autocomplete="email" required> 6 </p> 7 <label>会社名(必須)</label> 8 <p> 9 <input type="text" name="entry.1987797232" autocomplete="organization" required> 10 </p> 11 <dl class="radioBtn"> 12 <dt>お問い合わせ項目<span>必須</span></dt> 13 <dd> 14 <ul> 15 <li> 16 <input type="radio" name="entry.1302079128" value="ブログについて" id="Male"> 17 <label>ブログ</label> 18 </li> 19 <li> 20 <input type="radio" name="entry.1302079128" value="ホームページについて" id="Female"> 21 <label>ホームページ</label> 22 </li> 23 <li> 24 <input type="radio" name="entry.1302079128" value="その他"> 25 <label>その他</label> 26 </li> 27 </ul> 28 </dd> 29 </dl> 30 <p> 31 <label>お問い合わせ内容(必須)</label> 32 </p> 33 <p> 34 <textarea name="entry.1962979988" placeholder="お問い合わせ内容" required></textarea> 35 </p> 36 <p> 37 <input type="button" value="送信" onclick="sendGform()"> 38 <input type="submit" value="不可視ボタン" style="display:none" name=submitBtn> 39 </p> 40 </form> 41 <iframe name="dummyIframe" style="display:none;"></iframe> 42</div> 43<div id="thxMessage" style="display:none;">お問い合わせありがとうございました。</div> 44 <script> 45 function sendGform(){ 46 $("input[name=submitBtn]").click() 47 } 48 function click() { 49 document.myForm.submit(); 50 document.getElementById('form').style.display = 'none'; 51 document.getElementById('thxMessage').style.display = 'block'; 52 } 53 </script>

コンソールを見たところGoogle側のコードのこの部分にエラーが出ていました。

var Li,hqa,gqa;_.Ki=function(a){_.t.setTimeout(function(){throw a;},0)};_.Mi=function(a){a=gqa(a);!_.Oa(_.t.setImmediate)||_.t.Window&&_.t.Window.prototype&&!_.Dc("Edge")&&_.t.Window.prototype.setImmediate==_.t.setImmediate?(Li||(Li=hqa()),Li(a)):_.t.setImmediate(a)};

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

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

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

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

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

guest

回答1

0

自己解決

根本的な解決方法ではないかもしれませんが、HTMLのrequiredを使わずにJavaScriptでアラートを出す方法に切り替えました。

今回はテキスト入力欄を必須項目にしたいためnameをもとにその部分をチェックし、不備があった場合はアラートが出るようにしました。

var val=document.getElementsByName("emailAddress")[0]; if (val.value.length == 0) { alert("メールアドレスは必須項目です"); val.focus(); return; }

また、メールアドレス入力欄にメールアドレス以外が入力された場合にアラートが出るようにしたかったため、その部分のコードも追加しました。

var flag = 0; if(!document.myForm.emailAddress.value.match(/.+@.+..+/)){ flag = 1; } if(flag){ window.alert('メールアドレスが正しくありません'); return }

送信ボタンを押すとメールアドレスがきちんと入力されているか、必須項目に空欄がないかを確認してからデータが送信されます。

HTML

1<div id="form"> 2 <form action="https://docs.google.com/formsformResponse" method="post" name="myForm" target="dummyIframe"> 3 <label>メールアドレス(必須)</label> 4 <p> 5 <input type="email" name="emailAddress" value="" autocomplete="email"> 6 </p> 7 <label>会社名(必須)</label> 8 <p> 9 <input type="text" name="entry.1987797232" autocomplete="organization"> 10 </p> 11 <dl class="radioBtn"> 12 <dt>お問い合わせ項目</dt> 13 <dd> 14 <ul> 15 <li> 16 <input type="radio" name="entry.1302079128" value="ブログについて"> 17 <label>ブログ</label> 18 </li> 19 <li> 20 <input type="radio" name="entry.1302079128" value="ホームページについて"> 21 <label>ホームページ</label> 22 </li> 23 <li> 24 <input type="radio" name="entry.1302079128" value="その他"> 25 <label>その他</label> 26 </li> 27 </ul> 28 </dd> 29 </dl> 30 <p> 31 <label>お問い合わせ内容(必須)</label> 32 </p> 33 <p> 34 <textarea class="" name="entry.1962979988" placeholder="お問い合わせ内容"></textarea> 35 </p> 36 <p> 37 <input type="button" value="送信" onclick="sendGform()"> 38 </p> 39 </form> 40 <iframe name="dummyIframe" style="display:none;"></iframe> 41</div> 42<div id="thxMessage" style="display:none;">お問い合わせありがとうございました。</div> 43 <script> 44 function sendGform(){ 45 var val=document.getElementsByName("emailAddress")[0]; 46 if (val.value.length == 0) { 47 alert("メールアドレスは必須項目です"); 48 val.focus(); 49 return; 50 } 51 var flag = 0; 52 if(!document.myForm.emailAddress.value.match(/.+@.+..+/)){ 53 flag = 1; 54 } 55 if(flag){ 56 window.alert('メールアドレスが正しくありません'); 57 return 58 } 59 var val=document.getElementsByName("entry.1987797232")[0]; 60 if (val.value.length == 0) { 61 alert("お名前は必須項目です"); 62 val.focus(); 63 return; 64 } 65 var val=document.getElementsByName("entry.1962979988")[0]; 66 if (val.value.length == 0) { 67 alert("お問い合わせ内容は必須項目です"); 68 val.focus(); 69 return; 70 } 71 document.myForm.submit(); 72 document.getElementById('form').style.display = 'none'; 73 document.getElementById('thxMessage').style.display = 'block'; 74 } 75 </script>

投稿2019/11/20 05:00

yotubarail

総合スコア23

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問