2009-04-11 22 views

答えて

9

$( "。ui-datepicker")draggable() は機能しません。

+0

確かにそれはありません。私は明らかにjQuery UIの新機能ですので、ノービスの質問に助けてくれてありがとう。 –

+0

問題はありません:) javascript経由でロードされたクラスとIDの要素を知るには、Firebugをインストールします。 – zalew

+0

ああ、私を信じて、Firebugは私の友人です。私はちょうどdatepickerをドラッグ可能にすることさえ可能かどうか分からなかった。 –

6

この順序は重要です。

$('#myCalendarInput').datepicker(); 
$('#ui-datepicker-div').draggable(); 

EDIT:回答@JZ用品や鉱山の間に微妙な違いがあります。 JZの例を使用すると、ページ上の任意のdatepickerがインライン(input要素の代わりにDIVに関連付けられているもの)であっても、ドラッグ可能になります。私のコードはポップアップのdatepickersをドラッグ可能にするだけです。 datepickerプラグインは、すべてのポップアップに対して単一のDIV(ui-datepicker-divという名前)を作成し、datepickerが適用されたページの入力に対してその名前を再利用します。インラインDIVまたはSPANの場合、.ui-datepickerクラスを持つDIV/SPAN内に新しい名前のない日付ピッカーを作成しますが、その名前はありません。この場合、私のコードはdatepickerをドラッグ可能にするわけではありませんが、おそらく正しい動作ですが、JZはクラスに基づいて一致します。

例:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#calendar').datepicker(); 
    $('#calendar2').datepicker(); 
    $('#calendar3').datepicker(); 
    $('#ui-datepicker-div').draggable(); 
}); 
</script> 

<div> 
Calendar: <input id="calendar" type="text" /><br /> <-- draggable 
Calendar2: <input id="calendar2" type="text" /><br/> <-- draggable 
Fixed calendar: <div id="calendar3"></div> <-- fixed 
</div> 
+0

JZの回答がうまくいって以来、私はこれを試していませんでしたが、このソリューションで同じページの複数の日付ピッカーに問題はありませんか? –

+0

私のコードとJZには1つの違いがあります。 input要素の場合、datepickerは単一のui-datepicker-divを作成し、ポップアップを必要とするすべての入力に対してそれを再利用します。ただし、インラインカレンダーを使用している場合、JZコードではドラッグ可能になりますが、同じIDを持たないため、マイナスにはなりません。 – tvanfosson

+0

Ah。説明ありがとう。 +1 –

2

あなたは日付ピッカーにイベントを追加し、それをドラッグするためにそれを使用することができます。

//Add an event "onCreate" 
$.datepicker._updateDatepicker_Old = $.datepicker._updateDatepicker; 
$.datepicker._updateDatepicker = function(inst) { 
    this._updateDatepicker_Old(inst); 

    var onCreate = this._get(inst, 'onCreate'); 
    if (onCreate !== null) { 
     onCreate(inst); 
    } 
}; 

datepickerを呼び出して、onCreate関数を実装してドラッグ可能にした後。

$(function() { 
    //Create datepicker 
    $('#datepicker').datepicker({ 
     onCreate: function(inst) { 
      $(inst.dpDiv).draggable(); 
     } 
    }); 
});​ 

Example jsfiddle

+0

答えをありがとう。それは興味深い考えですが、受け入れられた答えと同じことを達成することはあまりにも複雑です。私はむしろjQuery UIに物事をハックしないでください。 –

関連する問題