1

这个周末我一直在玩http://textextjs.com/,因为它似乎是一个非常可靠的自动完成插件,具有将来可能有用的附加功能(如标记)。我尝试在一个当前使用我自己的自动完成功能的位置实现这一点,但是这个插件对我来说有一个关键问题,我还没有找到一个示例/解决方案。

我正在使用以下数据结构:

[
    {
        "id": "1",
        "title": "Active",
        //etc....
    },
    {
        "id": "2",
        "title": "Inactive",
        //etc....
    },
    //etc...
]

现在我正在使用 ajax/autocomplete 插件(尽管我最终需要为标签插件提供这个功能)。我有一个自定义的 ItemManager,它允许这个数据这个数据工作得很好,但这是我的问题。我希望能够将用户看到并与之交互的输入设置为 object.title,但是我希望将与表单一起提交的隐藏输入设置为 object.id。使用自动完成/标签插件时如何获得这种类型的功能?

我试图查看 onGetDataForm 因为它似乎需要创建一个实现它的插件(尽管对我来说,必须创建一个插件只是为了能够设置与可见的一个)但即使是这种情况,我也不知道如何访问自动完成中选择的项目的完整数据对象,以便能够将两个字段设置为不同。对此的任何帮助都会很棒。

4

1 回答 1

1

我不认为 TextExt.js 目前支持这一点,但它应该很容易实现。在我解释之前,请在 GitHub 中提交一个问题,以便最终解决(如果您还没有)。

看看这个功能https://github.com/alexgorbatchev/jquery-textext/blob/master/src/js/textext.plugin.autocomplete.js#L671

p.onGetFormData = function(e, data, keyCode)
{
    var self       = this,
        val        = self.val(),
        inputValue = val,
        formValue  = val
        ;
    data[100] = self.formDataObject(inputValue, formValue);
};

如您所见,它直接从输入框中返回值。您可以在这里做的是检查您的数据数组 ( self._suggestions),如果到目前为止用户键入的内容与某些内容匹配。如果是这种情况,您可以使用匹配的项目并返回id字段。

这是否回答你的问题?

于 2012-06-06T00:06:09.807 回答