如何在自动完成文本框jquery中使用数组?
例如
$(function() { var availableTags = [ "ActionScript", "AppleScript", "Asp"]; var availableTagsCode = ["1", "2", "3"]; $( "#tags" ).autocomplete({ source: availableTags }); });
实际上,我尝试使用以下代码选择建议时更改代码:
$("#tags_code").val(availableTagsCode);
我需要选择建议测试,如果我将从标签中选择第0
个数组,第0
个代码应分配给name="code"
文本框。
请帮我解决这个问题。
您可以定义一个select
事件处理程序:
$( "#tags" ).autocomplete({ source: availableTags, select: function(event, ui) { var index = availableTags.indexOf(ui.item.value); $("#tags_code").val(availableTagsCode[index]); } });
这是工作的JSFiddle演示 。
实际上,jQuery UI允许您在提供source
时使用具有value
和label
属性的对象数组。
所以,像这样的东西会起作用并且看起来更好:
var tags = [ {"label": "ActionScript", "value": 1}, {"label": "AppleScript", "value": 2}, {"label": "Asp", "value": 3} ]; $( "#tags" ).autocomplete({ source: tags, select: function (event, ui) { $("#tags_code").val(ui.item.value); } });
第二种方法的JSFiddle演示 。
如果您不希望在选择后替换值,则可以使用自定义属性而不是value
:
var tags = [ {"label": "ActionScript", "code": 1}, {"label": "AppleScript", "code": 2}, {"label": "Asp", "code": 3} ]; $( "#tags" ).autocomplete({ source: tags, select: function (event, ui) { $("#tags_code").val(ui.item.code); } });
JSFiddle演示 。
设置select
事件处理程序
$(function() { var availableTags = ["ActionScript", "AppleScript", "Asp"]; var availableTagsCode = ["1", "2", "3"]; $("#tags").autocomplete({ source: availableTags, select: function(e, ui) { $('#tags_code').val(availableTagsCode[availableTags.indexOf(ui.item.value)]); } }); });