0

重複の可能性:
Javascript を使用して、日付範囲が有効であることを確認するにはどうすればよいですか?

ユーザーがページに日付を入力できるようにしていますが、テスターの 1 人が次のエラーでデータベースの保存を正しく壊しています。

SqlDateTime オーバーフロー。1753 年 1 月 1 日 12:00:00 AM から 9999 年 12 月 31 日 11:59:59 PM の間である必要があります。

ユーザーにフィードバックを提供できるように、日付がサーバーに送信される前に、jQuery または JavaScript のクライアント側でこれを検証する既存の関数はありますか? 自分で書く必要はありません(おそらく不完全なものです)。

ありがとう

4

4 に答える 4

2

javascriptは、日付を処理するために>および<比較演算子をオーバーロードします。

if (yourDate > new Date('1/1/1753 12:00:00 AM') && 
    yourDate < new Date('12/31/9999 11:59:59 PM')) {
    // date is in your valid range
} else {
    // date is not in your valid range
}

http://jsfiddle.net/jbabey/UB9NR/

javascriptの検証はパフォーマンスのみを目的としており、セキュリティを追加しないことに注意してください。サーバー側の検証で常に補足する必要があります。

于 2012-06-20T13:41:07.143 に答える
1

Datepickerプラグインhttp://jqueryui.com/demos/datepicker/#min-max を使用し、日付範囲メソッドを使用してユーザーが間違った範囲を入力するように制限します

http://jqueryui.com/demos/datepicker/#date-range

コード

$(function() {
        $( "#from" ).datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 3,
            onSelect: function( selectedDate ) {
                $( "#to" ).datepicker( "option", "minDate", selectedDate );
            }
        });
        $( "#to" ).datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 3,
            onSelect: function( selectedDate ) {
                $( "#from" ).datepicker( "option", "maxDate", selectedDate );
            }
        });
    });
于 2012-06-20T13:41:16.600 に答える
1

jQuery 検証プラグインを試して、クライアント側でこれを処理できます。ただし、クライアントだけで実行しないでください。常に常に DB に送信する前にサーバー側で実行します。

jQuery docsに従って、コードはこのように単純にすることができます。

$("#myform").validate({
  rules: {
    field: {
      required: true,
      date: true
    }
  }
});

カスタムの日付形式が必要な場合、この回答は一見の価値があります

于 2012-06-20T13:37:00.727 に答える
1

date jsライブラリが必要です。この関数はあなたが探しているものだと思いますDate.validateDayドキュメントを参照してください

于 2012-06-20T13:42:24.517 に答える