前提・実現したいこと
カレンダーから日付を選んで、2つの日付の差分を自動的に表示させたい
発生している問題・エラーメッセージ
[HTML]id=returnDate 部分に日数が表示されない
該当のソースコード
[HTML] <tr> <th class="bottom" colspan="2"> <label for="start">開始日<span class="red">*</span></label> </th> <td> <p> <input id="FromDate" type="date" name="FromDate" required="1" size="30"> </p> </td> </tr> <tr> <th class="bottom" colspan="2"> <label for="end">終了日<span class="red">*</span></label> </th> <td> <p> <input id="ToDate" type="date" name="ToDate" required="1" size="30"> </p> </td> </tr> <tr> <th class="bottom" colspan="2"> <label>日数</label> </th> <td> <span id="returnDate"></span> </td> </tr> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー [jQuery①] jQuery(function($) { $('#FromDate').change(function(event) { setDate(); }); $('#ToDate').change(function(event) { setDate(); }); function setDate(){ var fromDate = new Date($('#FromDate').val() ); var toDate = new Date($('#ToDate').val() ); if (!toDate.getDate() || fromDate.getDate()>toDate.getDate()){ var year = fromDate.getFullYear().toString(); var mm = (fromDate.getMonth() + 1).toString(); var dd = fromDate.getDate().toString(); var yyyymmdd = year + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]); $('#ToDate').val(yyyymmdd); } var days = Math.floor((toDate.getTime() - fromDate.getTime()) / 86400000); if (days>=1){ $('#returnDate').html(' ('+days+')'); }else{ $('#returnDate').html(''); } } }); ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー [jQuery②] jQuery(function($) { jQuery(document).on('blur', '#FromDate, #ToDate', function(){ var date1 = document.getElementById("FromDate").value; var date2 = document.getElementById("ToDate").value; var diff = getDiff(date1, date2); jQuery("#returnDate").val(diff); }); }); /* *日付の差分日数を返却します。 */ function getDiff(date1Str, date2Str) { var date1 = new Date(date1Str); var date2 = new Date(date2Str); // getTimeメソッドで経過ミリ秒を取得し、2つの日付の差を求める var msDiff = date2.getTime() - date1.getTime(); // 求めた差分(ミリ秒)を日付へ変換します(経過ミリ秒÷(1000ミリ秒×60秒×60分×24時間)。端数切り捨て) var daysDiff = Math.floor(msDiff / (1000 * 60 * 60 *24)); // 差分へ1日分加算して返却します return ++daysDiff; → $('#returnDate').text(++daysDiff); で実装できたがNaNと最初に表示される。 }
試したこと
Google検索で同じような事例をいくつか試してみました。
type=textではなくtype=dateで表示させたいです。
①の方法でも②の方法でもいいのですが、なぜ表示されないのかがわからないです。
教えていただけますと幸いです。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/31 14:07
2021/07/31 14:30
2021/08/01 02:00
2021/08/01 02:21
2021/08/02 12:19