0

入力フィールドに onChange がある DHTMLX カレンダーに問題があります。

私は次のようにコードを初期化しています:

   jQuery(document).ready(function($){              
        var calendar;
        calendar = new dhtmlXCalendarObject(["date"]);
        calendar.hideTime();
        calendar.setDateFormat("%d/%m/%Y");
        $('.lightbox').lightbox();
        $('#slider').cycle();
    });
    function checkDate() {
        var date = $("[name='date']").val();
        alert(date);
    }

私が使用しているフォームでは:

<input type="text" name="date" id="date" onchange="checkDate();" />

日付が入力フィールドに入力されると、onchange関数が起動するはずです(そしてJQuery UI datepickerで動作していました)。ただし、この場合: このカレンダーの onchange は何もしません。

以下をこれに変更してみました:

   jQuery(document).ready(function($){              
        var calendar;
        calendar = new dhtmlXCalendarObject(["date"]);
        calendar.hideTime();
        calendar.setDateFormat("%d/%m/%Y");
        calendar.attachEvent("onChange",function(date, state){
               checkDate();
        });
        $('.lightbox').lightbox();
        $('#slider').cycle();
    });
    function checkDate() {
        var date = $("[name='date']").val();
        alert(date);
    }

しかし、日付が入力される前、つまり入力フィールドをクリックしたときに onchange イベントが発生します。

JQuery UI からこの DHTMLX に変更する理由は、JQuery UI Datepicker がすべてのプラットフォーム (iPhone/iPad など) をサポートしているわけではなく、DHTMLX がサポートしているためです。

4

1 に答える 1

0

入力から初期化されたときのカレンダーのバグだと思います。問題は、入力フィールドをクリックするとonChangeイベントがトリガーされることです(console.logまたは日付引数を出力すると、これを確認できます)。実際のユーザー生成の変更があります。私は同じ問題を抱えていました。代わりに「onClick」イベントを使用することもできます (これは、日付を手動で変更した場合ではなく、セレクターをクリックした場合にのみ機能します) または JQUERY を使用してイベントをキャッチしますカレンダーが送信している日付ではなく、入力フィールドから直接日付を取得しています。

calendar.attachEvent("onClick",function(date){
               checkDate();
        });
于 2013-11-04T21:44:02.490 に答える