前提・実現したいこと
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" />    <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" />    <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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/25 15:34