

Javascriptでフォームに入力された日付の有効性チェックを行いたく、下記のように記述しました。
if(MONTH >= 0 && MONTH <= 11 && DAY >= 1 && DAY <= 31){
var DATE = new Date((YEAR, MONTH, DAY);
if(DATE.getFullYear() == YEAR && DATE.getMonth() == MONTH && DATE.getDate() == DAY)
{alert("有効である");}
else{alert("有効ではない");}
}
この記述だと正常に動作はしますが、今回作っているものが年が必須項目ではないため、年に入力がない時には月日の部分のみで有効性をチェックしたいのです。
その場合、getMonthとgetDateだけを使うという手法ではダメなのでしょうか?(やってみましたが、正しい日付でも「有効ではない」と判断されてしまいます)
そこで、年がカラの時に、月の値が2、4、6、9、11かつ日の値が31の場合を「有効ではない」としたいのですが、うまくいきません・・・。
・年月日がそれぞれ別の入力ボックスになっているフォーム
・年は任意、月日のみ必須項目
・yyyymmddの形式になっているか、日付は有効か(うるう年判定や31日の有無)を判定したい
・年がカラの場合は、うるう年に関係なく日付に0229を許可(31日の有無判定は必要)
昨日から本格的にJavascriptを使い始めたばかりで、かなり初歩的な質問かもしれませんが、いろいろ調べても解決策が見つからず困っています。
何卒よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
年を使わないなら、Date オブジェクトを使わずに、
グレゴリオ暦の計算を独自に行う方が早そうです。
var m=[31,29,31,30,31,30,31,31,30,31,30,31];
if (year) { if (year%4!=0 || year%100==0 && year%400!=0) m[1]=28; } // 年が指定されたら閏を考慮
function B(n,a,b){return a<=n && n<=b}
if ( B(month,1,12) && B(day,1,m[month-1]) ) { alert('有効') } else { alert('無効'); }
余談ではありますが
全て大文字の変数名は、JavaScript では慣習的に「定数」だけに使用されます。
もし何らかの特別な理由が無い限りは、変数名は小文字で命名することを、強くオススメします。
No.1
- 回答日時:
>getMonthとgetDateだけを使うという手法ではダメなのでしょうか?
それで必要十分だとおもいます
ただし入力のブレを調整するのであれば、YEAR,MONTH,DAYはぞれぞれ
parseIntしてキャストした数値に置き換えておくとよいでしょう。
>(やってみましたが、正しい日付でも「有効ではない」と判断されてしまいます)
おそらく勘違いでは?
どうしてもというなら具体例を提示してください
>年がカラの時に、月の値が2、4、6、9、11かつ日の値が31の場合を「有効ではない」としたいのですが、うまくいきません・・・。
年がからなら逆に適当な年を充てればよいのでは?
>・年がカラの場合は、うるう年に関係なく日付に0229を許可(31日の有無判定は必要)
これは例外処理でMONTH=="1"&&DAY=="29"は無条件にOKとすればよいでしょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- Visual Basic(VBA) ExcelのVBAでシフト表を作っていますが、バグが出て困っています 2 2022/09/13 11:33
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- ドメイン・サーバー・クラウドサービス ドメインの有効期限について。詳しい方に質問です。 ドメインサーチで、ドメインの有効期限が Regis 3 2023/04/27 15:10
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onClickとsubmitの処理順序
-
条件により、リンク先に画面遷...
-
JSPとJavaScriptの連携について...
-
Javascriptで同じ数字を2回打...
-
日付入力欄の表示形式を自動的...
-
フォームの値が0だったら空白...
-
javascriptで入力フォームが空...
-
Javascript 郵便番号の入力欄で...
-
Javascriptが機能せず原因が分...
-
最初の入力を判断
-
return trueとreturn falseの用...
-
プルダウンで選択すると、DBの...
-
ボタンを押すとチェックボック...
-
【jQuery】input nameの文字列...
-
Selectの中身をfor文で入れる
-
確認ダイアログの出し方(JavaS...
-
1つのform内に2つのsubmitボタ...
-
VB.NET DateTimeの型について
-
<input>の選択肢をプルダウンメ...
-
チェックボックスのON/OFFに応...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文末の改行コードを削除したい
-
JSPとJavaScriptの連携について...
-
onClickとsubmitの処理順序
-
日付入力欄の表示形式を自動的...
-
javascriptで入力フォームが空...
-
条件により、リンク先に画面遷...
-
2重でメール入力チェックをした...
-
入力した文字を大文字に変換し...
-
フォームの値が0だったら空白...
-
Javascript 郵便番号の入力欄で...
-
submit後、同じ入力欄に戻らせ...
-
onChangeの使い方について教え...
-
javascriptでのフォーム自動入...
-
Webブラウザにてページのりロー...
-
フォームの<TEXTAREA>で文字数...
-
テキストボックス入力を半角英...
-
テキスト入力フォームの値を画...
-
テキストボックスを無効にする...
-
javaでフォーム入力の確認と文...
-
テキストフィールド入力文字列...
おすすめ情報