0

我在 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 上找到了一些代码来向下滚动到选定的元素,但是我发现没有代码可以简单地滚动到列表的末尾,而不管选择了什么。我需要这个,因为如果我选择第一个元素,这段代码就不会滚动!

4

1 回答 1

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.');
        }
    }
};
于 2012-12-25T20:56:38.520 回答