1

デフォルトのDHTMLカレンダーで前日を無効にする方法は?

次のコードを使用しました。

<script type="text/javascript">
 Calendar.setup({
        inputField : '_dob',
        ifFormat : '%m/%e/%y',
        button : '_dob_trig',
        align : 'Bl',
        singleClick : true,
      disableFunc: function(date) {
          var now= new Date();
        return (date.getTime() < now.getTime());
    }
    });
</script>

以前の日付を無効にすることで機能します。しかし、有効な日付を選択すると、何も起こりません。カレンダーのテキストファイルに日付が追加されていません。

月を変えて戻ってきたら、日付を選べます!

何か案が?

4

4 に答える 4

4

わお!

JavaScriptエラーの可能性があります。来月から戻ってこない限り、日付を選択できませんでした...

私はいくつかのifループを与えることによってそれを過ぎました。更新したコードは以下のとおりです。

<script type="text/javascript">
 Calendar.setup({
        inputField : '_dob',
        ifFormat : '%m/%e/%y',
        button : '_dob_trig',
        align : 'Bl',
        singleClick : true,
        disableFunc: function(date) {
          var now= new Date();
        if(date.getFullYear()<now.getFullYear())
        {
            return true;
        }
        if(date.getFullYear()==now.getFullYear())
        {
            if(date.getMonth()<now.getMonth())
            {
                return true;
            }
        }
        if(date.getMonth()==now.getMonth())
        {
            if(date.getDate()<now.getDate())
            {
                return true;
            }
        }
    },
    });
</script>

みんなへの挨拶が返ってきた...

于 2013-01-02T10:02:19.083 に答える
2

同じ問題が発生しましたが、デバッグ後、カレンダーが現在のカレンダーの日付を認識できないことが問題のようです(disableFuncコールバック関数によって無効になっているため)。2つのオプションがあります。

  1. disableFunc関数が現在の日付に対してfalseを返すことを確認してください。このようにすると、カレンダーで無効になることはなく、正しく機能します。
  2. 次の行をcalendar.jsのif(!cell.disabled)行の後に追加できます。(これは、私のバージョンのファイルの1183行目です-v 1.51)

    else{this.currentDateEl=セル; }

2番目のオプションでは、現在の日付も無効にできます。

このDHTMLカレンダーが何であるか疑問に思っている人のために、ここにそのドキュメントへのリンクがあります:http ://www.dni.ru/js/doc/html/reference.html

于 2015-01-21T17:36:32.953 に答える
1

以下のコードを試してください

 Calendar.setup({
            inputField : '_dob',
            ifFormat : '%m/%e/%y',
            button : '_dob_trig',
            align : 'Bl',
            singleClick : true,
            dateStatusFunc :    function (date) { 
                var now= new Date();
                return (date.getDate() <= now.getDate());
            }
        });
于 2013-01-02T06:54:57.980 に答える
1

Disable Functionは、常にTRUEまたはFALSEを返す必要があります。

disableFunc関数:JSDateオブジェクトを受け取る関数。その日付を無効にする必要がある場合はtrueを返し、そうでない場合はfalseを返す必要があります。非推奨(以下を参照)。

以下を参照してください、

DHTMLカレンダー設定リファレンス

しかし、あなたのコードでは、disable関数は何も返しません... :(したがって、jsエラーになり、イベントクリックでは何も機能しません。

あなたの状態をチェックしてください、

return (date.getDate() <= now.getDate());

上記の条件を確認した後、要件に応じてtrueまたはfalseを返します。

于 2013-01-02T05:49:47.107 に答える