Jquery 直到您键入一个字母,然后点击backspace,才显示完整菜单

Jquery 直到您键入一个字母,然后点击backspace,才显示完整菜单,jquery,Jquery,我这里有一个JS提琴,你可以从演示中看到,你必须点击键入一个字母(任何字母,但只有1个),然后点击backspace,这样在自动完成菜单出现之前就没有字母了。有人知道这是怎么回事吗?是虫子吗?这是我可以在代码中修复的东西吗?谢谢 <table> <tbody> <tr> <td><span class="ui-helper-hidden-accessible" role="status" ari

我这里有一个JS提琴,你可以从演示中看到,你必须点击键入一个字母(任何字母,但只有1个),然后点击backspace,这样在自动完成菜单出现之前就没有字母了。有人知道这是怎么回事吗?是虫子吗?这是我可以在代码中修复的东西吗?谢谢

<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,你是说这不重要吗?谢谢你,我需要把它改成小写才能工作!谢谢你的帮助