2011-06-10 36 views
2

我需要添加一個類「上面」或「下面」到我的輸入元素取決於哪一邊的日期選擇器打開。jQuery Datepicker - 添加類取決於它出現在哪裏

我似乎無法弄清楚如何獲得日期選擇器實例的位置,即將要創建....也許我只是在想它錯了。

 $('#order-main .datepicker').datepicker({ 
    showOn: 'both', 

    buttonImage: 'img/icons/calendar.png', 
    buttonImageOnly: true, 
    minDate: -1, 
    maxDate: "+1Y", 
    showButtonPanel: true, 
    showAnim: 'slideDown', 
    hideIfNoPrevNext: true, 
    dateFormat: 'yyyy-mm-dd', 
    duration: 500, 
    beforeShow: function(input, inst) { 
     var pos = $(input).offset().top; 
     // if the top position of the to-be-created instance is < top position 
     //of the elemnt, its ABOVE, therefore add above, otherwise add below. 
      inst.dpDiv.addClass('above') 
     } 
    }); 

我知道如何使用$ .extend它來擴展($日期選擇器,{_ checkOffset:功能(研究所,偏移,IsFixed設定){返回偏移}});所以它總是會顯示在下面,但我更願意保持其動態放置功能,但只是知道它的上面還是下面,所以我可以正確地設置我的輸入元素。

小東西,但它會很高興完成。

回答

2

我想這就是你要找的。

使用位置代替偏移量。

beforeShow: function(input, inst) { 
    if (inst.dpDiv.position().top > $(input).position().top) { 
     inst.dpDiv 
      .removeClass('below') 
      .addClass('above'); 
    } else { 
     inst.dpDiv 
      .removeClass('above') 
      .addClass('below'); 
    } 
} 
+0

你先生,是天才!非常感謝! – Benno 2011-06-10 09:21:22