1

对于 Jquery UI tag-it 小部件,我想禁用包含所有标签的 class="ui-widget-content ui-autocomplete-input" 文本框的文本输入。

我的目的是只允许某些人删除不适当的标签,但不允许任何人添加标签(这是自动生成的)。

对我来说最好的办法是编辑 tag-it .js 文件并为该字段添加 disable="disable" 吗?如果我这样做,那不会阻止提交该字段的内容吗?或者只要提交了相关的隐藏字段,这是否重要?

或者有没有更好的方法来做到这一点(一种压倒一切的风格?)而不修改 tag-it 文件本身?

谢谢,

道格

4

3 回答 3

2

在 tag-it.js 我替换了这一行:

this._tagInput = $('<input type="text"').addClass('ui-widget-content');

有了这个:

this._tagInput = $('<input type="text" readonly="readonly"/>').addClass('ui-widget-content');

添加 readonly="readonly" 属性。这具有阻止输入但仍允许用户删除不适当的自动生成标签的预期效果。

于 2012-09-30T13:09:08.463 回答
1

我有与原始操作相同的问题。但是由于问题已经存在 2 年半了,并且 tag-it 版本已更改。接受的答案需要更新为以下内容

tag-it.js 在第 478 行附近:

从:

        if (this.options.readOnly){
            tag.addClass('tagit-choice-read-only');
        } 

至:

            if (this.options.readOnly){
            tag.addClass('tagit-choice-editable');
            // Button for removing the tag.
            var removeTagIcon = $('<span></span>')
                .addClass('ui-icon ui-icon-close');
            var removeTag = $('<a><span class="text-icon">\xd7</span></a>') // \xd7 is an X
                .addClass('tagit-close')
                .append(removeTagIcon)
                .click(function(e) {
                    // Removes a tag when the little 'x' is clicked.
                    that.removeTag(tag);
                });
            tag.append(removeTag);            
        }
于 2015-03-24T14:25:15.317 回答
0

这是在 git 存储库的文档下,在 Properties 部分下:

$("#myTags").data("ui-tagit").tagInput.addClass("fancy"); //显然,如果你想用类做某事......

这转化为下面的解决方案,以我个人的实现风格,可能是我可以让它工作的唯一方法:

 $("#myTags").data("ui-tagit").tagInput.prop('disabled' , true); 

这是如果我正确理解你的问题。注意:ReadOnly 不会使标签不可编辑。

至于通过标签,你可以使用 ..

var x = $("#myTags").tagit("assignedTags");

将其作为输入字段,并确保其“singleFieldNode”含义标签是,(逗号)分隔的。这样你就可以解析它(逗号(,)分割成一个对象,或者你想这样做)

PS:要应用上面的任何片段,只需更改包含 TagIt 的 HTML 元素的“id”,您的代码就会正常工作。jQuery TagIt v2.0

于 2017-10-28T09:33:25.560 回答