Jquery 直到您键入一个字母,然后点击backspace,才显示完整菜单
我这里有一个JS提琴,你可以从演示中看到,你必须点击键入一个字母(任何字母,但只有1个),然后点击backspace,这样在自动完成菜单出现之前就没有字母了。有人知道这是怎么回事吗?是虫子吗?这是我可以在代码中修复的东西吗?谢谢Jquery 直到您键入一个字母,然后点击backspace,才显示完整菜单,jquery,Jquery,我这里有一个JS提琴,你可以从演示中看到,你必须点击键入一个字母(任何字母,但只有1个),然后点击backspace,这样在自动完成菜单出现之前就没有字母了。有人知道这是怎么回事吗?是虫子吗?这是我可以在代码中修复的东西吗?谢谢 <table> <tbody> <tr> <td><span class="ui-helper-hidden-accessible" role="status" ari
<table>
<tbody>
<tr>
<td><span class="ui-helper-hidden-accessible" role="status" aria-live="polite">4 results are available, use up and down arrow keys to navigate.</span>
<input name="Name" class="items ui-autocomplete-input valid" id="Name" type="text" value="Item Name" autocomplete="off">
</td>
<td>
<input name="PartNo" class="items" id="PartNo" type="text" value="Part Number">
</td>
<td>
<input name="Description" class="items" id="Description" type="text" value="Description">
</td>
<td>
<input name="cmd" class="blue-button" id="btnAddItem" type="submit" value="+">
</td>
<td>
<input name="cmd" class="blue-button" id="btnRemoveItem" type="submit" value="-">
</td>
</tr>
</tbody>
</table>
$(document).ready(function () {
$(".items").click(function () {
$(this).val('');
});
var items = [{
"ID": 1,
"Name": "HP DL360p",
"PartNo": " 670638-425",
"Description": ""
}, {
"ID": 2,
"Name": "Samsung 840 Pro 256GB",
"PartNo": "",
"Description": "256GB SSD"
}, {
"ID": 3,
"Name": "HP MSA P2000",
"PartNo": "AW568A",
"Description": ""
}, {
"ID": 4,
"Name": "HP BL460c G6",
"PartNo": null,
"Description": "HP G6 Blade"
}];
$("#Name").autocomplete({
minLength: 0,
source: items,
focus: function (event, ui) {
$("#Name").val(ui.item.Name);
return false;
},
select: function (event, ui) {
$("#Name").val(ui.item.Name);
$("#PartNo").val(ui.item.PartNo);
$("#Description").val(ui.item.Description);
return false;
}
}).data("ui-autocomplete")._renderItem = function (ul, item) {
return $("<li>")
.append("<a>" + item.Name + "<br>" + item.Description + "</a>")
.appendTo(ul);
};
});
如果有4个结果可用,请使用上下箭头键进行导航。
$(文档).ready(函数(){
$(“.items”)。单击(函数(){
$(this.val(“”);
});
可变项目=[{
“ID”:1,
“名称”:“HP DL360p”,
“零件号”:“670638-425”,
“说明”:”
}, {
“ID”:2,
“名称”:“三星840 Pro 256GB”,
“零件号”:“,
“说明”:“256GB SSD”
}, {
“ID”:3,
“名称”:“HP MSA P2000”,
“零件号”:“AW568A”,
“说明”:”
}, {
“ID”:4,
“名称”:“HP BL460c G6”,
“零件号”:空,
“说明”:“HP G6刀片”
}];
$(“#名称”).autocomplete({
最小长度:0,
资料来源:项目,
焦点:功能(事件、用户界面){
$(“#Name”).val(ui.item.Name);
返回false;
},
选择:功能(事件、用户界面){
$(“#Name”).val(ui.item.Name);
$(“#零件号”).val(ui.item.PartNo);
$(“#说明”).val(ui.item.Description);
返回false;
}
}).data(“ui自动完成”)。\u renderItem=功能(ul,项目){
返回$(“”)
.append(“+item.Name+”
“+item.Description+”)
.附录(ul);
};
});
您的源定义不正确
由于您没有使用简单的字符串数组,因此需要在源数组中的对象中至少定义label
[{
"ID": 1,
"Name": "HP DL360p",
label: "HP DL360p",
value: "HP DL360p",
"PartNo": " 670638-425",
"Description": ""
}, {
"ID": 2,
"Name": "Samsung 840 Pro 256GB",
label: "Samsung 840 Pro 256GB",
value: "Samsung 840 Pro 256GB",
"PartNo": "",
"Description": "256GB SSD"
}
]
有关更多详细信息,请参见jquery ui文档
或工作小提琴示例:啊,我明白了!谢谢你,现在唯一的问题是我用c#和razor来做这个列表,我不知道我怎么才能把标签和价值放进去。我只是做了“标签”,“价值”,但这不起作用,我猜我需要它没有报价?你对我有什么想法吗?谢谢这些引语不重要。为了更好地了解差异,我留下了这段引文。我的意思是数组是由var items=@Html.Raw(Json.Encode(@ViewBag.items));这只能返回“label”或“value”而不是label value,你是说这不重要吗?谢谢你,我需要把它改成小写才能工作!谢谢你的帮助