1

我正在使用 jQuery TextExt 插件 ( http://textextjs.com/ ) 创建一个输入字段,用户可以在其中输入语言作为标签,类似于 Facebook 输入标签的方式。

总的来说,该插件效果很好。

然而,我遇到了一个障碍,我似乎无法克服。我在输入字段上使用 TextExt,如下所示:

<script type="text/javascript">
    $('#id_languages').textext({
    plugins : 'tags prompt suggestions arrow autocomplete',
    tagsItems : ['English'],
    suggestions : languages, //variable set earlier
    prompt : 'Add more here...',
});
</script>

哪个可以正常工作。现在,我添加的标签越多,输入字段的增长就越多(正如预期的那样)。

但是,在某些时候,它会超出我给定布局中可接受的高度。

有没有一种工作方法可以使用 TextExt 指定输入元素的最大高度,并添加一个垂直滚动条,而不会在带有滚动条的 div 内弹出“建议”下拉菜单?

我希望这是有道理的,我现在有点困惑。

4

1 回答 1

1

我已经检查了源代码,没有任何地方可以更改它以便在没有黑客攻击的情况下完成你所需要的。

最接近的答案是限制每个输入的标签数量,这可以像这里描述的那样完成:如何限制 textExt 插件的输入总数?

   $('#id_languages').textext({
                plugins : 'tags autocomplete',
                tagsItems : Sourcearray,
                ext: {
                   tags: {
                     addTags: function(tags) {
                         if(checkLength()) {
                            $.fn.textext.TextExtTags.prototype.addTags.apply(this, arguments);
                         }
                     }
                   }
                 }
   });

这是验证功能checkLength()

function checkLength(){
   if($("#id_languages").next().children().length < 4){
      return true;
   }
  return false;
}

其中数字 4 是允许的标签数量。

如果这不能令人满意,您将不得不侵入textext.core.jstextext.plugin.tags.js寻找以下功能:

invalidateBounds(),preInvalidate()postInvalidate()玩高度操作。

于 2013-10-23T21:29:36.927 回答