2016-08-02 12 views
-1

JavaScript関数で日付と時刻を検証する方法はたくさんありましたが、うまくいきません。私は、日付の入力が過去の日付のときにユーザーに警告したいが、時間の開始は時間の終了と同じにすることはできませんし、時間の終了より遅くすることはできません。 私のHTMLコード:javascriptのhtml形式の日付と時刻の検証

<p> 
<label> Date: 
<input type="date" id="date" name="date" required /> 
</label> 
</p> 

<p> 
<label> Time start: 
<input type="time" id="timeStart" name="timeStart" required /> 
</label> 
</p> 

<p> 
<label> Time end: 
<input type="time" id="timeEnd" name="timeEnd" required /> 
</label> 
</p> 

Javascriptを私が試した:

function valiDate(date) { 
    var today=new Date(); 
    var inputDate=document.getElementById("date").value; 

    if (inputDate < today) { 
     alert("Your event cannot happen in the past."); 
    } 
    } 



function checkDate(date) 
    { 

    var dateInput=document.getElementById("date").value; 
    var parts=date.split("/"); 
    var yearInput=parts[0]; 
    var monthInput=parts[2]; 
    var dayInput=parts[3]; 


    var minYear = 1902; 
    var maxYear = (new Date()).getFullYear(); 
    var maxMonth = (new Date()).getMonth(); 
    var currentDay = (new Date()).getDate(); 

    if (yearInput<maxYear || monthInput<maxMonth || dayInput<currentDay) { 
     alert("Event cannot be held in the past. Move on."); 
    } 
} 
+2

を試してみてください。 – j08691

+0

また、試したjsでコンソールにあったエラーも投稿してください。または、あなたが試したことと、それらの方法があなたにとってうまくいかなかったことについて要約することもできます。 – scrappedcola

答えて

0

日付の比較のために使用される方法が間違っています。

d1.getTime() === d2.getTime(); 
d1.getTime() !== d2.getTime(); 

使用getTime()演算子またはdates.compare()関数。 日付を分割する場合は、 ' - 'を使用して日付を分割します。ここで

は作業jsFiddleです: https://jsfiddle.net/BoyWithSilverWings/rc08otjc/

0

あなたがしてくださいしようとしたと言うことはJavaScriptを投稿この

 function validDate() {  
    var today=new Date(); 
    var inputDate = new Date(document.getElementById("date").value); 
    today.setHours(0,0,0,0);  
    if (inputDate < today) { 
     alert("Your event cannot happen in the past.");   
    } 
    else { 
     var startTime = TimeinMillisec(document.getElementById("timeStart").value); 
     var endTime = TimeinMillisec(document.getElementById("timeEnd").value); 

     if(startTime > endTime) 
      alert("Event cannot be held"); 
      else 
      alert("Done"); 

    } 
    } 



    function TimeinMillisec(gTime) 
    { 
    var parts=gTime.split(" "); 
    var hhmm = parts[0].split(":"); 
     hhmm[0] = parseInt(hhmm[0]); 
    if(parts[1].toLowerCase() === "pm") 
     hhmm[0] = parseInt(hhmm[0]+12); 
     var seconds = parseInt(((+hhmm[0]) * 60 * 60) + ((+hhmm[1]) * 60));  
    return seconds; 
    } 
関連する問題