2012-01-05 37 views
2

次の問題があります。 私はjquery Datepickerを持っており、datepickerが開くといくつかの追加情報を表示したいと考えています。 私はFirebugののコンソールを使用して次の手順を実行したとき、私は「onChangeMonthYear」-Optionを使用して同じことを行うとき、それは予想jQuery Datepicker onChangeMonth年の追加

$("#ui-datepicker-div").append("additional text"); 

として動作しますが:

$("#datepicker").datepicker({ 
    onChangeMonthYear: function(year, month, inst) { 
     $("#ui-datepicker-div").append("additional text"); 
    } 
}); 

それは「追加が表示されませんテキスト"。

何か提案がありますか?

おかげ

+0

上の例で作業すると、あなたはそれを受け入れる必要があり –

答えて

0

var changed = false; 

$("#datepicker").datepicker({ 
    onChangeMonthYear: function(year, month, inst) { 
     changed = true; 
    } 
}); 

if(changed) { 
     $("#ui-datepicker-div").append("additional text"); 
} 
+0

いいえ、それは動作していません – matthias

+0

PanJanekのアドバイス –

0

'#UI-DatePickerの - div要素' を試してみてください日付ピッカーのスクリプトによって作成され、datepickedが欲しい時はいつでもそれをリフレッシュすることができます。そこに追加されたテキストは、いつでも上書きすることができます。 '#datepicker'要素の外側に独自のプレースホルダを作成し、そこにテキストを追加し、CSSで位置を合わせて、正しく見えるようにする必要があります。

2

問題は、onChangeMonthYearイベントがトリガされたときに、新しいカレンダーテーブルが既に作成されていないことです。したがって、テキストを追加していますが、コンテンツ全体が新しいテーブルに置き換えられます。

テキストを追加するためにタイムアウトを使用すると、追加する前にプラグインによってコンテンツが再作成されます。

var appendTimeout; 

function appendText(text) { 
    clearTimeout(appendTimeout); 
    appendTimeout= setTimeout(function() { 
     $('#ui-datepicker-div').append('<div>' + text + '</div>'); 
    }, 50); 
} 

$("#datepicker").datepicker({ 
    beforeShow: function() { 
     appendText('initialAppendedText'); 
    }, 
    onChangeMonthYear: function(year, month, inst) { 
     appendText('whenMonthIsChanged'); 
    } 
}); 

私は10msのタイムアウトを設定しましたが、この値を少し増やすことができます。

答えはあなたの問題を解決する助けている場合、それは同様に([FAQ](http://stackoverflow.com/faq#howtoask))他の人を助けることができるようにjsfiddle

+0

で私の更新されたコードを参照してくださいおそらく動作しますが、10msのタイムアウトが常に十分であることを確認することはできません。ブラウザは、他のスレッドを実行することによってその瞬間に少し遅くなるか、プロセッサが他のもので忙しくなる可能性があります。 2番目のこと:テキストは、日付ピッカーが更新されるまでのみ表示されます。 – PanJanek

+0

私はその理由でタイムアウトが増加する可能性があることを述べました。彼はまた、テキストの最初の追加のために 'beforeShow'イベントで同じことをすることができました。 IMOでは、datepicker divの外側にelemtnを追加すると、すべてのことを一緒に保つための頭痛になる可能性があるので、 "最も簡単な"ソリューションです... –

関連する問題