8

我正在使用 jquery 插件 Tokeninput。我需要防止用户输入重复值,Js代码如下:

$(document).ready(function () {
    // Configure Tags
    $('#Tags').tokenInput(tagSource(), 
    {
        prePopulate: selectedTags(),
        theme: "facebook",
        propertyToSearch: "Code",
        preventDuplicates: true
     });

    function tagSource() {
        var data = [];
        @if (Model.SourceTags != null && Model.SourceTags.Count() > 0) {
            <text>
                data = @(Html.Raw(Model.SourceTags));
            </text>
        }
        return data;
    }

    function selectedTags() {
        var selectedData = [];
         @if (Model.SelectedTags != null && Model.SelectedTags.Count() > 0) {
            <text>
                selectedData = @(Html.Raw(Model.SelectedTags));
            </text>
        }
        return selectedData;
    }
});

当我再次选择相同的项目时,输入字段中的现有项目会突出显示,并且没有添加任何内容。

此外,当我选择不同的项目时,第一个项目会突出显示,并且没有添加任何内容。

任何想法?

谢谢

4

2 回答 2

8

如果您仍然遇到此问题,我想我可能知道发生了什么。TokenInput 假定数据对象的“id”属性拼写为“id”(注意小写)。如果您的 id 属性拼写不同,您所描述的将会发生。供您参考,这发生在 add_token 函数中(在 v1.6.0 tokeninput.js 中的 js 文件中的第 495 行)。

于 2012-12-17T20:33:13.707 回答
1

最好的方法是限制下拉搜索列表。通过删除文本字段中的选定项目。

"SELECT id, title from job_categories WHERE id NOT IN (".$member->category_id.") AND title LIKE '%%%".$this->input->get('q')."%%' ORDER BY id DESC LIMIT 10"

此查询将从再次选择的列表中删除 prePopulate 值

于 2016-11-23T06:03:15.383 回答