【发布时间】:2016-09-16 07:56:05
【问题描述】:
我指的是选项maximumInputLength:将其设置为例如如果我输入长度为 8 的术语,“5”会显示消息“请删除 3 个字符”。不过,可以输入任意数量的字符。
虽然在某些情况下可能需要这样做,但它与 <input type="text" maxlength="5"> 的工作方式不同,因为这会阻止任何超过 5 个字符的输入。
所以为了在我的 UI 中获得一致的行为,我的问题是:如何实际限制输入?
到目前为止我已经尝试过:消息是在function MaximumInputLength 中生成的,所以我尝试按照here 的说明覆盖该函数,但没有成功。我收到了几个错误,例如“选项未定义”,“装饰未定义”,......虽然我仍然认为我必须以某种方式覆盖某些事情,但在 select2 4.x 中这样做的过程对我来说有点不清楚,所以任何帮助表示赞赏
编辑:velimir-tchatchevsky 的 answer 向我指出了这个解决方法:
$('select').select2().on('select2:open', function() {
$('.select2-search__field').attr('maxlength', 5);
});
有点骇人听闻(如果 css 类在未来版本中发生变化怎么办?),所以我更喜欢不同的解决方案,但这样就可以了
【问题讨论】:
-
在“标签”模式下使用 select2 时不起作用。这就是诀窍:
$element.select2({...}); $element.data('select2').$container.find('.select2-search__field').attr('maxlength', 5); -
@AlexeyKosov 似乎并非如此。也许是因为这是以前的不同版本,或者是因为用户更新了他们的响应,但如果你查看上面的代码,它会找到页面中的所有搜索字段并更新它们。你的对一个特定的人这样做,但任何一个都可以。我已经验证了使用标签模式的代码。
标签: jquery select2 jquery-select2-4