#実現したいこと
じゃらんのカレンダーのようなFROMで指定した日よりも前の日付を選択できないものを製作したいのですがうまくいかなくて困っています。
なるべくjqueryを導入せずに素のjavascriptのみで作成したいのでできればDatepickerなどの外部プラグインではなくinput type=dateの日付からでてくるカレンダーを使いたいと考えています
#発生している問題・エラーメッセージ
特にエラー等は起きておらずコードが機能しない状態です
##概要のソースコード
【index.html】
<tr> <th class="kikanDaimei" style="font-size:18px" height="30;">期 間</th> <td colspan="3"> <input id="dateA" name="DEADLINE01" type="date" value=''> <b>~</b> <input id="dateB" name="DEADLINE02" type="date" value=''> <b style="font-size:16px" class="NISU">日数</b> <input id="date3" size="10"name="DEADLINE03"type="text"> </td> </tr>
【javascript】
document.querySelector('input[type="date"]').addEventListener('click', function(){ var inputText = document.getElementById('dateA').value document.getElementById('dateB').min = inputText; }) function onblurA(){ document.getElementById("dateA").onblur = function(){ var date01 = document.getElementById("dateA").value; var date02 = document.getElementById("dateB").value; var diff = getDiff(date01, date02); document.getElementById("date3").value = diff; } } function onblurB(){ document.getElementById("dateB").onblur = function() { var date01 = document.getElementById("dateA").value; var date02 = document.getElementById("dateB").value; var diff = getDiff(date01, date02); document.getElementById("date3").value = diff; } } var getDiff = function(date1Str, date2Str) { var date1 = new Date(date1Str); var date2 = new Date(date2Str); var msDiff = date2.getTime() - date1.getTime(); //getTimeメソッドで経過ミリ秒を取得し、2つの日付の差を求める var daysDiff = Math.floor(msDiff / (1000 * 60 * 60 * 24)); //求めた差分(ミリ秒)を日付へ変換 return ++daysDiff; // 差分へ1日分加算して返却 } onblurA(); onblurB();
##試したこと
var date = new Date(); document.getElementById('dateA').min = new Date(new Date().getTime() - new Date().getTimezoneOffset() * 60000).toISOString().split("T")[0];
この方法であれば前日以前の日付を入力できなくなることを確認していますが後から記載できなくなるのはよくなかったのでできませんでした。
document.querySelector('input[type="date"]').addEventListener('click', function(){ var inputText = document.getElementById('dateA').value; document.getElementById('dateB').min = inputText; })
addEventListenerを使う方法やgetElementIdを使う方法などいろいろ試しては見ましたがどれも上手くいきませんでした。
動作環境はchromeで、他のIEやFirefoxなどでは使わない前提なのでできれば素のjavascriptでどうにかしたいのですが難しいでしょうか?
追記
google apps scriptのwedアプリ作成で作成しています
回答2件
あなたの回答
tips
プレビュー