即使Ajax调用未在Select2中返回任何结果,也要在输入中保留值

时间:2014-10-21 17:28:53

标签: javascript jquery ajax jquery-select2

我使用Select2插件作为输入框的自动完成功能。自动完成程序进行Ajax调用,一切都运行良好,除非没有结果,然后我想保留原样并且不起作用。例如:如果我键入" 555"并且在Ajax调用中找不到该值,然后我想离开" 555"作为文本值,因为我稍后会点击一个按钮添加它。

这是我的代码:

if ($codigo_arancelario.length > 0) {
    $codigo_arancelario.select2({
        placeholder: "Seleccione un estado",
        ajax: {
            dataType: 'json',
            url: function () {
                var codigo_arancelario = $codigo_arancelario.val();
                return Routing.generate('obtenerCodigoArancelario');
            },
            data: function(codigo_arancelario) {
                return {
                    filtro: codigo_arancelario
                }
            },
            results: function (data) {
                return {
                    results: data.entities
                };
            }
        },
        formatNoResults: function () {
            return "No se encontró el código";
        },
        formatAjaxError: function () {
            return "No hay conexión con el servidor";
        },
    });
}

这是一个直观的例子:

enter image description here

为了达到这个目的,我还需要做些什么?

1 个答案:

答案 0 :(得分:1)

为什么不用响应处理这个,如果响应没有数据返回用于查询数据的原始值?

根据请求,这里有一个例子,如果您使用C#和EF搜索数据库中的结果,它会是什么样子。请记住,这是一个非常简单的示例,说明您对AJAX呼叫所服务的内容一无所知。

    var searchResult = db.Where(x=> x.somethingToSearchAgainst == searchPeram);
    return searchResult.length == 0 
        ?   searchPeram
        :   searchResult;