-4

我有一个下拉列表、一个文本框和一个按钮。如果我在文本框中键入一个单词并单击按钮,则下拉列表应根据文本框中的该单词选择列表项。

例如:如果我输入 23,那么下拉列表应该列出从 23 开始的项目。

4

2 回答 2

1

jQuery UI Autocomplete似乎完全符合您的需求,甚至更好。

于 2012-07-19T13:23:30.723 回答
1

@GG。使用 jQuery UI 是一个更好的选择,但这里有一个非常简单的工作模型,不使用 UI:http: //jsfiddle.net/flackend/MA95K/2/

HTML:

<input type="text">
<input type="button" value="Button">
<select>
    <option>20</option>
    <option>21</option>
    <option>22</option>
    <option>23</option>
</select>​

jQuery:

$('input[type="button"]').on('mousedown', function() {

    var search_str = $('input[type="text"]').val()

    $('option[selected="selected"]').removeAttr('selected');

    $('option').each(function() {
        if($(this).text() == search_str)
        {
            $(this).attr('selected', 'selected');
            return false;
        }
    });
});​

编辑

这是一个使用 jQuery UI 自动完成功能的新 jsfiddle:http: //jsfiddle.net/flackend/rPGUy/1/


编辑

$('option[selected="selected"]').removeAttr('selected');基本上是说,“找到所有具有 value 属性selected选项 selected标签,如果有的话,然后删除该属性。”

因此,例如:

<select>
    <option>20</option>
    <option selected="selected">21</option>
    <option>22</option>
    <option>23</option>
</select>

会变成这样:

<select>
    <option>20</option>
    <option>21</option>
    <option>22</option>
    <option>23</option>
</select>

所以现在当我们让 jQuery 选择一个新的选项标签时,它不会发生冲突。

于 2012-07-19T13:33:54.773 回答