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

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

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

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

jQuery

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

HTML

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

Q&A

0回答

699閲覧

safariで<form>タグの送信ボタン<input type="submit">が押せない?

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2018/11/14 17:30

編集2018/11/14 17:36

<from>タグで、お問い合わせホームを作成していたのですが、
safariで<form>タグの送信ボタン<input type="submit">が押せないという現象におちいりました。

動作の流れは、以下の通りです。
入力フォームは、すべて必須項目。
すべて入力した後、<input id="agree">タグを選択すると、送信ボタンをクリック出来る。
送信ボタンをクリックした時、入力漏れがある場合はエラーメッセージを通知。
漏れがなければ、フォーム内容が送信され、送信完了画面へ移行される。

##フォームの内容
すべて必須項目になるように制作しています。

HTML

1<form action="booking.php" method="post" name="booking"> 2<section class="guestinfo"> 3 <h3>Guest Information</h3> 4 <div class="name clearfix"> 5 <p>First Name <br> 6 <input type="text" name="lName" value="" required placeholder="ex. Hanako"/></p> 7 <p>Last Name <br> 8 <input type="text" name="fName" value="" required placeholder="ex. Yamada" /></p> 9 </div> 10 <div class="email clearfix"> 11 <p>Email<br> 12 <input type="email" name="Email" value="" id="email" required placeholder="ex. XXX@test.com"/></p> 13 <p>Confirm Email <br> 14 <input type="email" name="cEmail" value="" id="emailC" required oninput="check01(this)" class="check01" /></p> 15 </div> 16 <div class="tel"> 17 <p>Phone Number<br> 18 <input type="tel" name="phone" value="" required placeholder="ex. 000-0000-0000"/></p> 19 </div> 20 <div class="address"> 21 <p>Address<br><textarea name="address" cols="30" rows="3" required></textarea></p> 22 </div> 23 <div class="birthday"> 24 <p>Birthday<br><input class="checkS" name="Birthday" id="Birthday" type="text" min="2018-12-14" placeholder="YYYY/mm/dd" required></p> 25 </div> 26 <div class="bloodtype"> 27 <p>Blood Type<br> 28 <select name="roomType" required> 29 <option value selected>---</option> 30 <option value="Dormitory Room">A</option> 31 <option value="Triple Room">B</option> 32 <option value="Quadruple Room">AB</option> 33 <option value="Quadruple Room">O</option> 34 </select> 35 </p> 36 </div> 37</section> 38<div class="agreement"> 39 <label><input id="agree" type="checkbox" name="tos" required />I agree to privacy.</label> 40</div> 41<p class="transmission"><input id="transmission" name="transmission" type="submit" value="Reservation &#62;" /></p> 42</form>

 
入力漏れがある場合の通知設定、
<input id="agree">タグを選択すると、送信ボタンをクリック出来る設定
をJSで設定しています。

js

1// 入力漏れの通知 2$(window).on("load", function() { 3 $("select, textarea").each(function(index, element) { 4 element.addEventListener("invalid", function(e) { 5 if(element.validity.valueMissing){ 6 e.target.setCustomValidity("Required item"); 7 } else { 8 e.target.setCustomValidity(""); 9 e.preventDefault(); 10 } 11 }); 12 }); 13 $("input").each(function(index, element) { 14 element.addEventListener("invalid", function(e) { 15 if(element.validity.valueMissing){ 16 e.target.setCustomValidity("Required item"); 17 } else if ($(this).hasClass('check01')){ 18 check01(input); 19 }else{ 20 e.target.setCustomValidity(""); 21 e.preventDefault(); 22 } 23 }); 24 }); 25}); 26function check01(input) { 27 var mail = email.value; 28 var mailC = input.value; 29 if (mail != mailC){ 30 input.setCustomValidity('An email does not accord.'); 31 }else{ 32 input.setCustomValidity(''); 33 } 34} 35// [#agree]を選択すると、送信ボタンをクリック出来る。 36$(window).on("load", function() { 37 transmission(); 38 $("#agree").click(function(){ 39 transmission(); 40 }); 41 function transmission(){ 42 if ($("#agree").prop("checked") == false) { 43 $("#transmission").prop("disabled", true); 44 } else { 45 $("#transmission").prop("disabled", false); 46 } 47 } 48});

 
日付選択をする部分のために、
「datepicker.min.js」を読み込んでいます。
このJSの設定は、HTMLの下部に記述しています。

HTML

1<script> 2$(window).on("load", function() { 3 if((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) { 4 } else { 5 calendar(); 6 } 7}); 8function calendar() { 9jQuery('#Birthday').datetimepicker({ 10 timepicker:false, 11 format:'Y/m/d', 12 formatDate:'Y/m/d.', 13 minDate:'2018/12/14', 14}); 15} 16</script>

 
上記の記述で入力の動作確認を行ったところ、
ChromeやFirefoxなどで問題なく動きました。

safariでは、
送信ボタンをクリックした時、入力漏れがある場合はエラーメッセージを通知するところまでは、正常に動くのですが、
入力漏れがない状態して送信ボタン押しても、フォーム内容が送信されず、送信完了画面へ移行されません。

やってみたけどダメだったこと

ネットで色々調べていたら、
safariでは、<input type="submit">が動かないという記述を見たので、
下記の方法を試してみました。

結果は、
送信ボタンをクリックした時、入力漏れがある場合に出るエラーメッセージの通知が出てこずに、フォーム内容が送信され、送信完了画面へ移行してしまう。

js

1function transmission() { 2 document.booking.transmission.addEventListener('click', function() { 3 document.booking.submit(); 4 }); 5}

どうしたら、safariでも想定した動きの流れになるでしょうか?

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

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

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

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

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

colling

2018/11/15 01:27

こちらの環境ではiPhone のSafariでも送信ボタンでフォーム送信され、症状が出ないです。ボタンアクティブにはなりますか?
x_x

2018/11/15 01:45

Safariのバージョンはいくつでしょうか? また、<input type="submit">が動かないという情報はどこのものですか? それと、本題と関係ないかもしれませんがdatepicker.min.jsがどれかわからなかったのでアドレスを記載してください。
退会済みユーザー

退会済みユーザー

2018/11/15 14:04

他の方もおっしゃっている通りSafariといってもスマホ版やタブレット版、パソコン版などがあり、またバージョンによって挙動が変わる場合があるためきちんと明記されることが近道かと。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問