1

範囲を選択するときにjquery UI datepickerに奇妙な問題があります。質問の前に、私は他の多くの人々によって書かれたコードに取り組んでいます。すべての機能が機能するように、最適化された順序で jquery ツールと UI が含まれています。jquery UI を除くすべて。私が言及した理由は、他のすべてのコードを壊すため、バージョンを更新したり、ライブラリの順序を切り替えることができないためです:((ただし、jquery、js、jquery UIがどこにも2回含まれていないことを確認しました)

とはいえ、問題はこれです-「終了」日が「開始」日よりも遅くなる2つの日付が必要です。これは、jquery サイトの次のコードで簡単に実行できます。

$(function() {
    $( "#from" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            $( "#to" ).datepicker( "option", "minDate", selectedDate ); //BREAKS!
        }
    });
    $( "#to" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 3,
        onClose: function( selectedDate ) {
            $( "#from" ).datepicker( "option", "maxDate", selectedDate ); //BREAKS!
        }
    });
});

問題は、「BREAKS!」とコメントした行で日付を選択するとコードが壊れることです。メインの日付ピッカー関数内で2番目の日付ピッカーが検出されず、エラーが発生するだけです-SCRIPT438:オブジェクトはプロパティまたはメソッド「日付ピッカー」をサポートしていません

だから私は次の投稿を読んで、次の方法で物事を行うことに決めました. これは機能しますが、明らかに範囲機能がありません。

$(document).ready(function(){

$('#from').datepicker({
            changeMonth: true,
            changeYear: true,
            numberOfMonths: 1,
            showButtonPanel: true,
    onSelect: function(dateText, inst) { 
    $('[name=wmFrom]').val(dateText); //need this part for the search filters
    }

});
 $('#to').datepicker({
            changeMonth: true,
            changeYear: true,
            numberOfMonths: 1,
            showButtonPanel: true,
    onSelect: function(dateText, inst){ 
    $('[name=wmTo]').val(dateText); //need this part for the search filters
    }       
});
});

さて、私はまだjsとjqueryを学んでいます。datepicker内でdatepickerを呼び出し/初期化せずに、この範囲機能を実装するのを手伝ってくれる人はいますか? この問題は、おそらくライブラリのバージョンまたは互換性に問題があることを意味していると思います。しかし、私が言ったように、私は本当にそれらを取り除くことも、これを大きく変えることもできません. どんなアイデア/助けも大歓迎です..


より詳しい情報-

私より前に働いていた誰かがこの方法で作業を行っており、私が変更を加えると、さまざまな機能が壊れてしまうため、これはイライラします。これは内部アプリケーションであるため、リンクを提供できません:(。

これは私が話していることです - 最初に、私が取り組んでいる問題ファイルの先頭に含まれているヘッダー php があります。このヘッダーには、jquery ライブラリへのリンクがあります。header.php をインクルードした後、queryLoader.js、jquery.easing.1.3.js へのリンクがあります。次に、スクリプトと本体の html を含む一連のコードがあります (これは、datepicker に関連付けられた html 入力がある場所です)。次に、/full/jquery.tools.min.js、jquery.effects.core.js、jquery.ui.core.js、jquery.ui.widget.js、jquery.ui.datepicker、query.ui.tooltip をリンクします。 js 、jquery-ui.css。この後、$.tools.validator.fn や serializeObject() などの関数を使用するスクリプトがさらにあります。

jquery lib を 2 回ロードしていると仮定して、/full/jquery.tools.min.js を /tiny/jquery.tools.min.js または /all/jquery.tools.min.js に変更すると、次のエラーが表示されます。 serializeObject() などの関数を含む行では、このプロパティまたはメソッドをサポートしていません。ページが読み込まれたときにこれを取得します。

すべての UI クラス リンクの後に /jquery.tools.min.js を追加すると、次のようになります。入力の datepicker 初期化の時点で、オブジェクトはプロパティまたはメソッド 'datepicker' をサポートしていません。ページが読み込まれたときにこれを取得します。

私は誰をすべきか:(

4

2 に答える 2

0

jQuery ツールに関する一般的な頭痛の種は、プラグイン ファイルに完全な jQuery.js を含むバージョンがあることです。これにより、jQuery ツールが他のプラグインの後にロードされる場合に問題が発生する可能性があります。プラグインが完全な jQuery ライブラリをファイルに含めるのはひどいやり方ですが、jQuery ツール チームはそれを素晴らしいと考えています。最初に使用しているバージョンを確認してください。

基本的に、問題はユーザーが jQuery が 2 回読み込まれていることに気付かないことに帰着します。すでにプラグインが登録されている別のバージョンの上に jQuery をロードすると、それらのプラグインが消去されます。

ブラウザー コンソールを使用してスローされたエラーを確認し、トラブルシューティングに役立てます

于 2012-12-23T14:27:33.723 に答える