2009-12-18 60 views
1

如何获取数组中索引位置的值,该数组的用户使用自动完成选择了哪个元素?自动完成jQuery插件:所选数组索引的值

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

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

然后,说用户选择了“保罗”,我如何才能选择指数“1”的价值?

回答

0

当我明白你的问题,你可能只是做类似

function FindIndex(arr, searchValue){ 
    for(var i = 0; i < arr.length; ++i){ 
     if(arr[i] === searchValue){ 
      return i; 
     } 
    } 
} 
+1

也可以用jQuery find()方法做到这一点。 http://docs.jquery.com/Traversing/find#expr – Cheeso 2009-12-18 19:33:39

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"); 
1

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

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

例如

 $('.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'))可以直接引用自动完成的源代替项目。