私は自分のページでいくつかの日付ピッカーを使用しており、場合によってはそのうちの 1 つで div を非表示にしています。その後、他の日付ピッカーの位置が正しくなくなり、入力のはるか上にあります。これは、初期化時に場所が決定されるためだと思います.divを再度表示すると、位置が正しいためです。
しかし、他の日付ピッカー (div) が非表示になった場合に変更される位置を作成するにはどうすればよいでしょうか?
私は自分のページでいくつかの日付ピッカーを使用しており、場合によってはそのうちの 1 つで div を非表示にしています。その後、他の日付ピッカーの位置が正しくなくなり、入力のはるか上にあります。これは、初期化時に場所が決定されるためだと思います.divを再度表示すると、位置が正しいためです。
しかし、他の日付ピッカー (div) が非表示になった場合に変更される位置を作成するにはどうすればよいでしょうか?
おそらく、beforeShow
イベントでの位置を設定します。
$(".is-datepicker").datepicker("option", "beforeShow", function(input, inst){
$(inst.dpDiv).position({
my: "left top",
at: "left bottom",
of: $(input)
});
position()
バージョン1.8で追加されましたhttp://api.jqueryui.com/position/
私は1.7を使用しているため、受け入れられた回答が機能しなかったため、別の回答を追加しました。他の誰かがこれを役立つと思うかもしれません。
_checkOffset メソッドを使用して必要に応じて変更することで実行できます
$.datepicker._checkOffset_original = $.datepicker._checkOffset;
$.datepicker._checkOffset = function(inst, offset, isFixed) {
var offset = $.datepicker._checkOffset_original(inst, offset, isFixed);
var alterOffset = this._get(inst, 'alterOffset');
if (alterOffset)
return alterOffset.apply((inst.input ? inst.input[0] : null), [offset]); // trigger custom callback
return offset;
}
日付ピッカーで必要なコールバックを設定します
$('#id').datepicker('option', 'alterOffset', function(offset){
//change offset here
return offset;
});