自动完成jQuery插件:所选数组索引的值

时间:2009-12-18 18:09:21

标签: javascript jquery autocomplete

如何获取数组中索引位置的值,用户使用自动完成功能选择了哪个元素?

例如如果我输入具有两个元素的数组作为自动完成插件的输入:

var arr = [];
arr[0] = "John";
arr[1] = "Paul";

然后,说用户选择“保罗”,我如何获得所选索引“1”的值?

4 个答案:

答案 0 :(得分:1)

jQuery方式: 如果您的自动完成源是普通数组(即不是标签值对或URL的数组),那么您可以

$.inArray(ui.item.value,myAutocompleteSource)

e.g。

       $('.my-autocompletes').autocomplete({
                  source:['Option1','Option2','Option3'],
                  select: function(event, ui) {
                    alert('Your selected a string with index '+
                     $.inArray(ui.item.value,$(_self).autocomplete('option','source'))
                    );
              }
        });

如果源是一个标签 - 值对的数组,那么你可以做

var index = -1;
$(_self).autocomplete('option','source')).each(function(idx) { 
       if (this.label == ui.item.label) { index=idx; return false; }
});
alert('You selected a string with index '+index);

当然,$(_self).autocomplete('option','source'))可以替换为对自动填充项源的直接引用。

答案 1 :(得分:0)

据我了解你的问题,你可以做一些像

这样的事情
function FindIndex( arr, searchValue ){
    for( var i = 0; i < arr.length; ++i ){
        if( arr[i] === searchValue ){
            return i;
        }
     }
 }

答案 2 :(得分:0)

此参考http://docs.jquery.com/Attributes/val#val 说你可以使用这样的选择器:

$('#selection option:selected')....

答案 3 :(得分:0)

var arr = [];
arr[0] = "John";
arr[1] = "Paul";
...
//user selects something
//assuming select value now is in an input field
var index = jQuery.inArray($("input#yourselector").val(), arr);
if (index > -1)
    alert(index);
else
    alert("value not found in autocomplete array");