2012-12-25 88 views
0

我在jQuery中有一個功能,它在選擇框中添加文本框中的內容。當我點擊一個按鈕的功能被稱爲:使用jQuery滾動到多選擇的最後一個元素

 addToList = function(textField, selectList) 
    { 
      var val = $('#'+textField).val(); 
      var select = $('#'+selectList); 

      //If element does not exist already... 
      if (select.find('option[value="' + val + '"]').length === 0 && val!="") 
      { 
       //Add new element to the list 
       $('<option>', { 
       value: val, 
       text: val 
       }).appendTo(select); 

       //Clear text field 
       $('#'+textField).val(""); 

       //Scroll down multi select and select automatically the added option 
       //TODO: Scrolls only to selected element 
       var lastOption = select.find("option[value="+val+"]"); 
       lastOption.attr("selected", true);    
      } 
      else 
      { 
       if (val!="") 
       { 
        alert("\""+val+"\" is already in the list."); 
       } 
      } 
    }; 

我想,是我每次一個元素添加到列表,列表中向下滾動到它的底部(這意味着該列表的最後一個元素將在其最後一行顯示),添加的元素將被自動選中。

我發現SO向下滾動到所選元素一些代碼,但我沒有發現任何代碼,只需滾動無論選中後什麼到列表的末尾。我需要這個,因爲如果我選擇第一個元素,這段代碼就不會滾動!

+0

你看着'scrollTop'功能? –

+0

是的。很多!它並沒有幫助! – user1881815

+0

如果術語'list'你的意思'select'標籤,他們很難與合作是爲什麼,有提供更多的可交互的網頁,以取代他們這麼多的插件。在IE中,你不太可能使用'select'實現你想要的東西' – charlietfl

回答

0

試試這個:

var addToList = function(textField, selectList) { 
    var $textField = $('#' + textField), 
     $select = $('#' + selectList), 
     val = $textField.val(), 
     valueFilter = '[value="%s"]'; 
    if(val) { 
     if($select.find('option').filter(valueFilter.replace('%s',val)).length === 0) { 
      $('<option/>').appendTo($select).attr('value', val).text(val); 
      $textField.val(''); 
      $select.val(val);//<<<<<<<<<<<< 
     } 
     else { 
      alert('"' + val + '" is already in the list.'); 
     } 
    } 
}; 
+0

謝謝,但它不起作用。您的代碼會取消選擇已選擇的內容(我不希望發生這種情況),並且不會滾動到列表的末尾。 :( – user1881815

+0

你將不得不通過「取消選擇」和「滾動到」來解釋你的意思。演示會很好。 –

相關問題