2016-06-15 13 views
0

私はこの機能を使用して、ユーザーが入力した日付を検証します。これまでのところ、私は日付形式が正しいことを確認するだけです(dd/mm/yyyy)。今日の日付を確認するには<javascript>

しかし、入力した日付が、過去または未来の日付ではなく、今日の日付であることも確認したいと考えました。

私はvar currentdate = new Date();のようなものを考えて両方を比較しましたが、私はまだ日付をつけていないし、それを台無しにしたくありませんでした。どのように私はそれを書く必要がありますか?

function validate(){ 
var date = $("#dateentry").val(); 

if (/^(0[1-9]|1\d|2\d|3[01])\/(0[1-9]|1[0-2])\/(19|20)\d{2}$/.test(date)){ 
    $("#msg").html("The date format is correct"); 
}else{ 
    $("#msg").html("The date format must be dd/mm/yyyy"); 
} 

} 
+0

入力日付の種類は何ですか? – brk

+0

@ user2181397これはテキスト入力の簡単な入力です。 – Gonzalo

+1

ライブラリを使用することを検討しますか? http://momentjs.com/docs/#/parsing/には、この種のものに役立つ多くの機能があります。 – Sudsy

答えて

2

あなたの唯一の選択は、今日の日付との比較です。あなたがinput type="date"を使用している場合

var todaysDate = new Date(); 
if(new Date(date).setHours(0,0,0,0) >= todaysDate.setHours(0,0,0,0)); 
{ 
    $("#msg").html("Date should not be prior or greater that current date"); 
} 
+0

Dateコンストラクタを使用してd/m/yの形式で文字列を解析することをお勧めします。これはお勧めできません。日と月の数字が同じである日付を除き、期待される結果は得られません。 – RobG

1

あなたは、このように、このスニペットが

HTML

<input type="date" name="dateTime" id="dateTime"> 

JS

var dateTime = document.getElementById("dateTime").value; 
var today = new Date().toISOString().split('T')[0]; 
document.getElementById("dateTime").setAttribute('min', today); 
有用であろう任意の検証

希望を避け、以前の日付を無効にすることができます

DEMO

+0

入力タイプの日付をサポートしていないブラウザでは?また、* toISOString *は、GMTタイムゾーンで日付を返します。そのため、日付はホストの日付と異なる場合があります。 – RobG

2

特に、ECMA-262(ISO 8601拡張フォーマット)に含まれているフォーマットでない場合は、手動で日付ストリングを解析する必要があります。

d/m/y形式の日付を解析して検証する関数は次のとおりです。それが今日かない場合は、その後、今日の日付を作成00:00:00に時間を設定し、比較することで確認することができます。

function parseDMY(s) { 
 
    var b = (''||s).match(/\d+/g); 
 
    var d = new Date(b[2]||0, (b[1]||0)-1, b[0]); 
 
    return d && d.getMonth() == b[1]-1? d : new Date(NaN); 
 
} 
 

 
var today = new Date(); 
 
today.setHours(0,0,0,0); 
 

 
console.log('Today is: ' + today); 
 

 
// Returns true on 15 June 2016 
 
var s = '15/06/2016'; 
 
console.log('Is today ' + s + '? ' + (parseDMY(s).getTime() == today.getTime()))

また、これは値が入力された必要性のテストを削除します別々に。

関連する問題