2011-07-17 29 views
2

datepicker入力の内容はプログラムによって "setDate"メソッドによって変更され、変更された日付に応じて入力フォームのプレビューを更新します値。jQuery .datepicker( "setDate"、newdate)はonChangeイベントまたはonSelectイベントをトリガーしていません

"onSelect"イベントは、datePicker UIによって日付が変更され、setDateが呼び出されたときでない場合にのみトリガーされます。

入力の "onChange"イベントもトリガされません。

今は、私のupdatePreview関数を "setDate"の後に手動で呼び出すことが唯一の方法であり、 "getDate"メソッドから得られる日付オブジェクトを再フォーマットする必要があるようです。

もっと簡単な方法はありますか?

モックアップはjsFiddleです。 「プログラムで変更する」ボタンはプレビューを更新しません。

+0

私は主にあなたの質問に従うことができますが、あなたの質問にいくつかのコードを追加すると多くの助けになります。たとえば、あなたの_updatePreview_関数が何をしているのか分かりません。たとえば、[jsFiddle](http://jsfiddle.net/)を使って問題のデモを作成することができます。 – andyb

+0

大きな質問、ロット!それを投稿していただきありがとうございます。あなたの受け入れた答えに対するコメントの下にjsFiddleの回答があります。 – veeTrain

答えて

2

私が正しく理解していた場合は、プログラムで入力するか、または設定されている日付の別個の要素を更新します。その場合、updating an alternate fieldプレビューはすでにjQuery UI Datepickerに焼き付けられています。

日付ピッカーウィジェットはいえ、代替<input>フィールドではなく<div>プレビューを更新することができるようですので、あなたはそれが<div>を更新する必要がある場合は、このdemoはもう少し作業が必要になります。

+2

私は、altFieldオブジェクトをdivに変更すると、値がまだ設定されていることに気付きました。 jQueryコードを少し掘り下げた後、フックを登録してコールバックオブジェクトを構築することができました。 [更新されたデモ](http://jsfiddle.net/bV5fu/1/) ちょっと醜いですが、うまくいきます。 – Rots

2

あなたはイベントを自分でトリガーすることができますが、一般的にjavascriptの設定値はイベントをトリガーしません。これはjQueryにも当てはまります。 イベントを自分で焼成:

$(elem).select(); // for select obviously 
$(elem).change(); // for change 
+0

select()はdatepickerダイアログを開きます。私はそれを望ましくありません。 – Rots

+0

ああ、今私はあなたが意味するものを(jsFiddle-thingで)見ています。いいえ、updatePreview()メソッドを直接または間接的に呼び出すよりも良い方法はないと思います(andybが答えたもの以外)。しかし、あなたは日付を設定するための関数を作ることができます。そうすれば、頻繁にコードを繰り返す必要はありません。 – Johan

関連する問題