kas*_*ans 13 jquery jquery-ui tag-it
如何修改tag-it ui插件https://github.com/aehlke/tag-it(版本v2.0),因此它只允许选择x个标签以及如何仅允许"availableTags"中的标签-选项"?
这个问题(或者它的第一部分)在过去已经被问过和aswerd,但是对于以前版本的插件.
kas*_*ans 14
首先将自定义选项(maxTags和onlyAvailableTags)添加到插件文件中,如此...
options: {
itemName : 'item',
fieldName : 'tags',
availableTags : [],
tagSource : null,
removeConfirmation: false,
caseSensitive : true,
maxTags : 9999,//maximum tags allowed default almost unlimited
onlyAvailableTags : false,//boolean, allows tags that are in availableTags or not
allowSpaces: false,
animate: true,
singleField: false,
singleFieldDelimiter: ',',
singleFieldNode: null,
tabIndex: null,
onTagAdded : null,
onTagRemoved: null,
onTagClicked: null
}
Run Code Online (Sandbox Code Playgroud)
接下来用这个替换_isNew函数......
_isNew: function(value) {
var that = this;
var isNew = true;
var count = 0;
this.tagList.children('.tagit-choice').each(function(i) {
count++;
if (that._formatStr(value) == that._formatStr(that.tagLabel(this))|| count >= that.options.maxTags) {
isNew = false;
return false;
}
if (that.options.onlyAvailableTags && $.inArray(that._formatStr(value),that.options.availableTags)==-1) {
isNew = false;
return false;
}
});
return isNew;
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在初始化tagit时使用这些选项.只允许使用sampleTag,最多包含3个标签
$(function(){
var sampleTags = ['php', 'coldfusion', 'javascript', 'asp', 'ruby', 'python'];
//-------------------------------
// Tag events
//-------------------------------
var eventTags = $('#s_tags');
eventTags.tagit({
availableTags: sampleTags,
caseSensitive: false,
onlyAvailableTags: true,
maxTags:3,
})
});
Run Code Online (Sandbox Code Playgroud)
您只需将此参数提供给.tagit即可:
beforeTagAdded: function(event, ui) {
if($.inArray(ui.tagLabel, availableTags)==-1) return false;
}
Run Code Online (Sandbox Code Playgroud)
其中availableTags是您的自动完成数组.
关于下面的@snuggles查询,我相信(尽管我对json协议的熟悉程度有限),你可能会做这样的事情:
//define autocomplete source
var returnedUsers, jsonUrl = "http://[your server]/user_lookup";
$.getJSON(jsonUrl,function(json){
returnedUsers = json; // or whatever handler you need to use
});
// instantiate tagit
$("#ccList").tagit({
availableTags: returnedUsers,
beforeTagAdded: function(event, ui) {
// only allow existing values
if($.inArray(ui.tagLabel, returnedUsers)==-1) return false;
// limit length
if ($(".tagit-choice").length >= 5) return false;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9853 次 |
| 最近记录: |