2011-11-09 76 views
3

我使用jQuery Tokeninput插件顯示的音樂藝術家名稱的自動完成列表,通過JSONP交付的下拉列表。如何顯示「上面」輸入元素

這一切工作正常,但我需要輸入在頁面含義,當然,在下拉列表本身熄滅頁面底部的固定頁腳。

我想這種反轉行爲,並有下拉「上面」的輸入元素列表apear,但我似乎無法找到一種方法來實現這一目標。

任何想法?

+0

這將有助於對頁腳的HTML/CSS結構以及tokeninput輸出的一個樣本,讓我們知道從哪裏開始。 話雖如此,我能想象如何讓名單上,你需要做的唯一的事情是扭轉元素的「顯示」命令,所以你讓他們出現在所需的順序(假設是希望) – Sotkra

+0

嗨Sotkra,我不能爲我的生活找到一種方法來複制/粘貼'tokeninput'生成的HTML。 HTML被附加到文檔的主體上,並在'模糊'處再次被移除,因此只要我點擊螢火蟲HTML消失。你能描述一下你的想法嗎?不過,我確信我可以在正確的方向上指導工作。非常感謝! – gordyr

+0

怎麼樣的活動鏈接到您的網頁演示? – Sotkra

回答

0

我認爲你必須更改代碼show_dropdown()功能,裏面jquery.tokeninput.js文件:

function show_dropdown() { 
     dropdown 
      .css({ 
       position: "absolute", 
       top: $(token_list).offset().top + $(token_list).outerHeight(), 
       left: $(token_list).offset().left, 
       zindex: 999 
      }) 
      .show(); 
    } 

只需適當調整「頂」廣告「左」的參數。

1

我修改show_dropdown功能可以自動確定是否它應該顯示的上方或下方:

function show_dropdown() { 
    if (input_box.is(':focus')) { 
     var windowHeight = $(window).height(); 
     var docViewTop = $(window).scrollTop(); 
     var dropdownPosition = $(token_list).offset().top + $(token_list).outerHeight(); 
     var availableSpace = windowHeight - (dropdownPosition - docViewTop) 
     var borderWidth = parseInt(dropdown.css('border-bottom-width')); 

     if (availableSpace >= (settings.maxHeight + 2 * borderWidth)) { 
      dropdown.css('bottom', ''); 
      $('body').css('position', ''); 

      dropdown.css({ 
       'border-top-width': 0, 
       left: $(token_list).offset().left, 
       top: $(token_list).offset().top + $(token_list).outerHeight() 
      }); 
     } else { 
      dropdown.css('top', ''); 

      var bodyHeight = $('body').outerHeight(); 
      var bodyTop = $('body').offset().top; 
      var bottom; 

      if ((bodyHeight + bodyTop) < dropdownPosition) { 
       bottom = dropdownPosition - (bodyTop + bodyHeight) ; 
      } 
      else { 
       bottom = (bodyTop + bodyHeight) - ($(token_list).offset().top + borderWidth); 
      } 

      dropdown.css({ 
       'border-top-width': borderWidth, 
       'border-top-color': dropdown.css('border-bottom-color'), 
       'border-top-style': dropdown.css('border-bottom-style'), 
       'bottom': bottom, 
       'left': $(token_list).offset().left - parseInt($('body').css('margin-left')), 
       'position': 'absolute' 
      }); 
      $('body').css({ 
       'position': 'relative' 
      }); 
     } 
     dropdown.css({ 
      maxHeight: settings.maxHeight, 
      overflow: 'auto', 
      zIndex: settings.zIndex 
     }).show(); 
    } 
} 

我還添加一個maxHeight屬性tokenInput並用它來檢查這兩個空間和集的大小下拉。

試一下這裏:http://jsfiddle.net/colin_young/dvuHD/19/(注意我的版本有一些股票版本的重大修改,我只是沒有機會爲他們創建拉請求)。

不嘗試以確保然而上方的空間。假設是,如果沒有下面的空間,沒有上面的空間,你可以做的不多,儘管以輸入元素爲中心可能是一個很好的折衷。

+0

我應該注意到我的解決方案有一些定位問題,所以它不是一個完全通用的問題。您需要在您的具體實施中對其進行測試。 –

相關問題