jQuery UI自动完成:从列表中强制执行选择而不进行任何修改

seg*_*ult 9 javascript jquery jquery-ui knockout.js

我正在使用Autocomplete组合框中提供的自定义绑定和Knockout JS模板/ JQuery

我需要强制用户必须在自动完成列表中选择一个值,然后选择该值以便无法向select中添加其他文本.我搜索过,但找不到如何防止输入其他文本的示例.它必须保持可编辑状态,只要他们选择了错误的下拉菜单,但他们输入的内容必须与列表中的值匹配100%.

我在jquery上发现了这个帖子,但它已经9个月了,没人发布答案.

Irv*_*nin 13

没有内置功能可以做你想要的.

我做了一个简单的项目,使用自动完成change事件,你必须从自动完成中选择值,如果没有删除值.

改变事件

如果字段模糊,则触发,如果值已更改.

选择后,该字段将被禁用,您可以使用激活锚点(例如)激活它.

码:

$("#artist").autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "http://en.wikipedia.org/w/api.php",
            dataType: "jsonp",
            data: {
                'action': "opensearch",
                    'format': "json",
                    'search': request.term
            },
            success: function (data) {
                response(data[1]);
            }
        });
    },
    change: function (event, ui) {
        if (ui.item == null || ui.item == undefined) {
            $("#artist").val("");
            $("#artist").attr("disabled", false);
        } else {
            $("#artist").attr("disabled", true);
        }
    }
});

$('#changeArtist').click(function (e) {
    e.preventDefault();
    $("#artist").attr("disabled", false);
});
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:http://jsfiddle.net/IrvinDominin/nH4Nx/