模糊的jQuery Select2标签

我正在使用Select2在我的应用程序中创建一个Gmail风格的电子邮件地址字段。 除了一种情况之外,它的效果很好:当用户键入电子邮件地址并且没有在其后面放置空格或逗号时,并且没有按Enter键或制表符。 例如,如果他们只是键入电子邮件地址,然后使用鼠标选择表单中的下一个字段,他们键入的电子邮件地址就会消失。

我在这里有一个示例jsfiddle 来说明问题。

这是我在隐藏输入上设置select2的方法:

$(function(){ $('input').select2({ tags: [], width: "300px", dropdownCss: {display: 'none'}, tokenSeparators: [',', ', ', ' '] }); }); 

有没有办法让我设置select2,以便onBlur它只需要剩下的东西,当前不是一个标签,并使其成为一个?

现在,使用’selectOnBlur’选项在select2库的3.3版本中支持此function。

我有一个带有select2(标签模式)和提交按钮的表单。 默认情况下,当用户键入标记时,如果不从下拉列表中选择标记或按下其中一个触发控制键,则用户输入将丢失,因为插件会在blur事件上关闭生成的输入dom对象。

我对此问题的快速解决方法是破解插件模糊function并添加以下行:

 var val=this.search.val(); if($.trim(val)!='') this.onSelect({id:val,text:val}); 

调用模糊函数后,上面的代码会检查用户是否输入。 如果有任何触发select事件并发送所需对象。 我传递的对象仅适用于标记模式中的select2,如果使用select2 v3.2,则可以在第1311行的AbstractSelect2的模糊函数的开始处插入此行。我希望这可以让您了解如何自定义小部件根据您的需要。

我真的不明白你在这里想做什么,因为你在谈论电子邮件:

 jQuery(element.val().split(",")).each(function () { data.push({id: this, text: this}); }); 

但你可以试试这个:

 var splitted = element.val().split(","); for(var i=0,z=splitted.length;i 

顺便说一下,你的jsfiddle是不完整的。

从4.0.3开始的文档 :

 $('select').select2({ selectOnClose: true }); 

这将捕获选择并在用户单击其他位置时创建标记。