2011-08-01 16 views
0

私はJavascriptでかなり慣れていませんが、登録プロセスのためにこの種の保護を作成しようとしているため、ユーザーは存在しない日付例えば9月31日(うるう年は2月29日の別の問題ですが、後で説明します)。私はそれがここで間違っているかなり明白なものがあります確信しているが、私はそれを選ぶのに十分なを経験していないよJavascriptの生年月日 - 選択を防止する2月30日

<select name="Day"> 
<option value="day">Day</option> 
<script type="text/javascript"> 
function printDays(y) { 
    var x = 1; 
    while (x <= y) { 
     document.write("<option value=" + x + ">" + x + "</option>"); 
     x++; 
    } 
} 
window.onload=printDays(31); 
</script> 
</select> 
<script type="text/javascript"> 
if (document.getElementById("month").value == feb) { 
    printDays(28); 
} 
</script> 

を:

現在、私は唯一の2月を扱っており、これを持っています!あなたはいつも、そのようなあなたのための日付ルールのすべてを扱うでしょうJQueryUI Date Pickerとしてプラグインを使用することができ

+0

述べたように、ケースを扱うが、あなたは、JSの検証を行う場合でも、バックエンドでそれを検証し、常に覚えているだろうライブラリがあります。 – amal

答えて

0

私はナット完全にあなたの質問を理解してますが、何か他のもののためにあなたの作業時間を節約するためにhttp://www.nickabusey.com/jquery-date-select-boxes-plugin/の使用を考慮してください。

Demo Code

+0

それは完璧に見えるが、デモは動作するはずですか?あなたが月を変えた場合、日フィールドに正しい数字が入力されません... – Sebastian

+0

それは動作していますが、デモはしません(私は著者に連絡しました) – Mythli

0

...

+0

プラグインはありますか?これは同じことですが、まだドロップダウンボックスを使用していますか? – Sebastian

1

回答が受け付けた - 日付セレクタを使用することは良い考えであるが、無効な値を返す決定ユーザー(またはJavaScript無効有するもの)を妨げません。

入力の値をjavascriptの日付に変換してから、もう一度やり直すことをお勧めします。 JavaScriptの日付のデータは1970年ですが、64ビットの符号付きの値(つまり、50万年以上の範囲)を使用しています。 JavaScriptの月は0〜11の番号が付けられています。

しかし、これはサーバー側の検証の代用ではありません。

0

チェック年、月、日の組み合わせであれば、正しい

function checkDate(year, month, day) { 
    try { 
     var d = new Date(year, month, day); 
     return !isNaN(d.getDate()) && d.getDate() == day; 
    } 
    catch (e) { 
     return false; 
    } 
} 
関連する問題