2011-02-14 91 views
1

我一直在寻找一个jQuery自动提示标签(类似于stackoverflow标签输入)插件,它限制了输入标签的数量(即不允许创建超过5个标签例如?)。如果有人知道这样的插件,或者是kind enough to modify this code来限制标签​​的数量,我会非常感激。限制jQuery输入标签的数量

+0

+1我正在使用相同的插件并希望添加相同的功能。如果没有人同时提供解决方案,我会尽快解决它 – stephen776 2011-02-14 18:38:52

+0

@ stephen776这将是伟大的:)我认为这个插件是非常好的,应该很容易添加一个小功能来计算标签和限制的数量它。 – adam 2011-02-14 18:55:31

+0

发布了一个答案。对tagIt插件进行了快速更改应该没有问题实施。 – stephen776 2011-02-14 21:50:39

回答

3

好做了更改标签它的插件...

首先打开插件js文件并找到is_new功能(对文件的底部)...

更换整个功能与此:

function is_new (value){ 
     var is_new = true; 
     var count = 0; 
     this.tag_input.parents("ul").children(".tagit-choice").each(function(i){ 
      count++; 
      n = $(this).children("input").val(); 
      if (value == n || count >= options.maxTags) { 
       is_new = false; 
      } 
     }) 
     return is_new; 
    } 

通知我只在循环添加的count变量和修改if语句,以检查是否计数为> =选项maxTags

然后当u调用插件,设置maxTags选项:

$('#tagBox').tagit({ 
     availableTags: '../Tag/GetTags', 
     maxTags: 5 
    }); 

容易!

0

虽然我没有看到你的代码,但我假设你有一个约定来定界标记是什么(空格,逗号,其他),这样你可以跟踪dlimiters的数量,然后只是不允许他们键入在输入第5个分隔符后。

0

This one看起来不错。看看selectionLimit属性。

0

为防万一其他人使用最新版本的tag-it,以下是解决方案:)享受!

_isNew: function(value) { 
     var that = this; 
     var isNew = true; 
     //JAVI ADDED NEXT LINE 
     var count = 0; 
     this.tagList.children('.tagit-choice').each(function(i) { 
      //JAVI ADDED NEXT LINE AND MODIFIED IF (ADDING SECOND CONDITION) 
      count++; 
      if (that._formatStr(value) == that._formatStr(that.tagLabel(this)) || count >= that.options.maxTags) { 
       isNew = false; 
       return false; 
      } 
     }); 
     return isNew; 
    },