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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2210閲覧

iPhoneで一部のjavascriptが動かない

ataru2222

総合スコア272

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2022/01/24 11:37

前提・実現したいこと

iOS(iPhone)のみで一部のJavascriptがうごかない。
こちらを動くようにしたいです。

発生している問題・エラーメッセージ

PCのブラウザでは動作しており、スマホのアンドロイドOSでもきちんと動くのですが、iPhoneのみでうごかない状況です。

画面イメージ
イメージ説明
javascript
・開始日をいれると終了日を入力
・開始時間をいれると終了時間を入力

こちらについてはiPhoneでも動くことを確認しているのですが、
合計時間の欄の時間差を自動計算する処理については反応しません。

該当のソースコード

HTML(jsp)

1<form method="POST" name="task_report_form" action="<c:url value='/create_task_report' />" > 2 3 <label for="mission_name">ミッション名</label><br /> 4 <input type="text" id="text_mission" value="mission" disabled><br /> 5 <input type="hidden" id="text_mission_id" name="mission_id" value="" /> 6 <label for="mission_name">カテゴリー名</label><br /> 7 <input type="text" id="text_category" value="category" disabled><br/><br/> 8 <input type="hidden" id="text_category_id" name="category_id" value="" /><br/> 9 10 <!-- リストをEL式で反映させる --> 11 <label for="task_name">タスク名</label><br /> 12 <select name="task_name" id="task_name" onChange="changePulldown()"> 13 <c:forEach var="task_list_list" items="${task_list_list}" varStatus="status"> 14 <option value="${task_list_list.task_name},${task_list_list.task_list_id}">${task_list_list.task_name}</option> 15 </c:forEach> 16 </select> 17 <br /><br /> 18 <input type="hidden" id="text_task_list_id" name="task_list_id" value="" /> 19 <input type="hidden" id="text_task_list_name" name="task_list_name" value="" /> 20 21 22 <label for="start_time">開始日時</label><br /> 23 <input type="date" id="start_date" name="start_date" />&ensp; &ensp; <input type="time" id="start_time" name="start_time" /> 24 <br /><br /> 25 26 <label for="end_time">終了日時</label><br /> 27 <input type="date" id="end_date" name="end_date" />&ensp; &ensp; <input type="time" id="end_time" name="end_time" /> 28 <br /><br /> 29 30 <label for="total_time">合計時間</label><br /> 31 <input type="text" id="total_time" name="total_time" disabled/> 32 <br /><br /> 33 34 35 <label for="comment">コメント</label><br /> 36 <input type="text" id="comment" name="comment" /> 37 <br /><br /> 38 39 <div class="div_create_report2"> 40 <input type="hidden" name="_token" value="${_token}" /> 41 <button type="submit" id="submit_button" class="btn btn-custom01" > 42 <span class="btn-custom01-front">レポートの登録</span> 43 </button> 44 </div> 45 46 <input type="hidden" id="m_c_name" value="${m_c_name}"> 47 <input type="hidden" id="c_t_name" value="${c_t_name}"> 48 <script src="${pageContext.request.contextPath}/javascript/form_controll_task_report.js"></script> 49 </form>

javascript

1//日付が入力された時の自動処理 2const start_date = document.getElementById('start_date'); 3start_date.addEventListener('change',()=>{ 4 const end_date = document.getElementById('end_date'); 5 end_date.value = start_date.value; 6}); 7 8//開始時間が入力されたら終了時間を入力 9const start_time = document.getElementById('start_time'); 10start_time.addEventListener('change',()=>{ 11 const end_time = document.getElementById('end_time'); 12 end_time.value = start_time.value; 13 14}); 15 16//終了時間が入力された時の自動計算 17const end_time = document.getElementById('end_time'); 18end_time.addEventListener('change',()=>{ 19 time_add(); 20}) 21 22//終了日が入力された時の自動計算 23var end_date = document.getElementById('end_date'); 24end_date.addEventListener('change',()=>{ 25 time_add(); 26}) 27 28//時間を自動計算して、total_timeに表示するメソッド 29function time_add() { 30 var start_date = document.getElementById('start_date'); 31 var start_time = document.getElementById('start_time'); 32 var end_date = document.getElementById('end_date'); 33 var end_time = document.getElementById('end_time'); 34 const total_time = document.getElementById('total_time'); 35 36 start_date = new Date(start_date.value + " " + start_time.value); 37 end_date = new Date(end_date.value + " " + end_time.value); 38 const differ = end_date.getTime() - start_date.getTime(); 39 const hour = Math.floor(differ/1000/60/60); 40 const min = Math.floor(differ/1000/60)%60; 41 if(hour < 0 || min < 0 || hour >= 24) { 42 total_time.value = "0以下、24時間を超える値は入力できません。" 43 } else { 44 total_time.value = String(hour).padStart(2,"0") + ":" + String(min).padStart(2,"0"); 45 } 46 47}

試したこと

https://chaika.hatenablog.com/entry/2017/11/24/090000
https://qiita.com/myzkyy/items/ce6a26c9c59612e6f515

こちらのサイトを参考にして解決を試みたのですが
・勉強のためJQueryを使わずにしたのですが、JQueryの記述でよく分からず
(対応するイベントのCSSにcursor: pointer;を追加する)

・Body直下だと動かなくなる(?)
Divを配置して囲ってみたのですが、iPhoneでは駄目でした。

こちらの記述を使うと一番手っ取り早いようなのですが
p {
cursor: pointer;
}

自分のようなHTMLの場合、
Pにあたる部分は何にしたら良いのでしょうか?

詳しい方いらっしゃまいたら、ご教授ください。
よろしくお願いたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

new Date(文字列)に与えられる文字列の形式は、ブラウザによって異なります

ISO8601形式('1995-12-17T03:24:00')で与える、年月日時分を別々に数値として与える、あるいはMomentなどサードパーティのライブラリを使う、などの対応が必要です。

投稿2022/01/24 13:19

maisumakun

総合スコア145201

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

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

ataru2222

2022/01/25 15:34

できました。 まさか最後の最後でこのような事になっているとは思いもしませんでしたが、 Momentという便利なライブラリで対応しました。 教えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問