Как изменить положение всплывающего окна элемента управления jQuery DatePicker - PullRequest
101 голосов
/ 19 марта 2009

Есть идеи, как заставить DatePicker появляться в конце соответствующего текстового поля, а не непосредственно под ним? Как правило, текстовое поле находится внизу страницы, а DatePicker перемещается вверх, чтобы учесть это, и полностью покрывает текстовое поле. Если пользователь хочет ввести дату, а не выбрать ее, он не может. Я бы предпочел, чтобы он появился сразу после текстового поля, поэтому не имеет значения, как он регулируется по вертикали.

Есть идеи, как управлять позиционированием? Я не видел никаких настроек для виджета, и мне не повезло с настройкой CSS, но я мог легко что-то упустить.

Ответы [ 21 ]

0 голосов
/ 30 апреля 2014

Это помещает функциональность в метод с именем function, позволяя вашему коду инкапсулировать его или сделать метод расширением jquery. Просто используется в моем коде, отлично работает

var nOffsetTop  = /* whatever value, set from wherever */;
var nOffsetLeft = /* whatever value, set from wherever */;

$(input).datepicker
(
   beforeShow : function(oInput, oInst) 
   { 
      AlterPostion(oInput, oInst, nOffsetTop, nOffsetLeft); 
   }
);

/* can be converted to extension, or whatever*/
var AlterPosition = function(oInput, oItst, nOffsetTop, nOffsetLeft)
{
   var divContainer = oInst.dpDiv;
   var oElem        = $(this);
       oInput       = $(oInput);

   setTimeout(function() 
   { 
      divContainer.css
      ({ 
         top  : (nOffsetTop >= 0 ? "+=" + nOffsetTop : "-=" + (nOffsetTop * -1)), 
         left : (nOffsetTop >= 0 ? "+=" + nOffsetLeft : "-=" + (nOffsetLeft * -1))
      }); 
   }, 10);
}
...