回答
我想我已經解決了這個問題,我用下面的代碼:
// force tokenizing of Select2 auto-complete fields after pasting
$('body').on('paste', '.select2-input', function() {
// append a delimiter and trigger an update
$(this).val(this.value + ',').trigger('input');
});
這是假定逗號被設置爲在插件的「tokenSeparators」初始化設置分隔符。
使用輸入類型文本,並將select2分配給它。像
<input type="text" id="makeTokens" />
,然後在javascript
$("#makeTokens").select2({
placeholder: "Paste data",
tags: ["red", "green", "blue"],
tokenSeparators: [",", " "]
});
在標籤
,你可以指定你想讓它顯示爲選擇選項的值,並且使用tokenSeperators到單獨的逗號和空格等文本。
注意:由此產生的輸入值將以逗號分隔的令牌。
由於某種原因,唐納德的解決方案並不適用於我(也許較新版本的select2行爲有所不同)。這是對我工作:
$('body').on('paste', '.select2-input', function (e) {
var pasteData = (e.originalEvent || e).clipboardData.getData('text/plain') || '';
$(this).val(pasteData + ',');
e.preventDefault();
});
因爲在該點的事件被觸發的.select2-input
值是一個空字符串,我extractacted從事件對象粘貼的字符串。顯然,複製操作的默認select2在此之後仍然觸發,所以我必須添加e.preventDefault();
以阻止其運行並混淆輸入。
只要運行這個jQuery的自動取separatoes從options.tokenSeparators
直接,並申請頁面中所有選擇2實例:
$(document).on('paste', 'span.select2', function (e) {
e.preventDefault();
var select = $(e.target).closest('.select2').prev();
var clipboard = (e.originalEvent || e).clipboardData.getData('text/plain');
var createOption = function (value, selected) {
selected = typeof selected !== 'undefined' ? selected : true;
return $("<option></option>")
.attr("value", value)
.attr("selected", selected)
.text(value)[0]
};
$.each(
clipboard.split(new RegExp(select.data('select2').options.options.tokenSeparators.map(function (a) {
return (a).replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}).join('|'))),
function (key, value) {
if (value && (!select.val() || (select.val() && select.val().indexOf('' + value) == -1))) {
select.append(createOption(value));
}
});
select.trigger('change');
});
對於4.0.1版本:
$('#my-select').data('select2').dataAdapter.$search.val("tag1,tag2,").trigger("input");
這將增加兩個標籤:tag1
和tag2
(注意尾隨,
)。
重要說明:您應該將data: []
添加到select2
初始參數中。
在將事件觸發爲'keyup'後,這對我有用。 '$ j('#searchTerm')。data('select2')。dataAdapter。$ search.val(「tag1,tag2,」)。trigger(「keyup」); –
- 1. 將輸入轉換爲選擇
- 2. 將標籤轉換爲輸入文本
- 3. 將下拉選擇輸入轉換爲需要選擇的單選按鈕
- 4. 將PHP變量輸入爲HTML選擇標記
- 5. 將輸入標記的ASP.NET MVC值轉換爲sql查詢
- 6. 使用java腳本將HTML輸入標記轉換爲Dojo TextBox
- 7. 選擇並轉換標記的值
- 8. 將輸入轉換爲UpperCase
- 9. 將輸入(從標準輸入)轉換爲列表
- 10. 將表單文本輸入轉換爲選擇選項下拉列表
- 11. 選擇項目後選擇2(輸入)值作爲對象
- 12. 轉換爲JSF直通輸入元素(「HTML5友好的標記」)
- 13. 將HTML輸入標籤轉換爲FormHelper標籤?
- 14. 將選擇元素替換爲選項選擇的輸入文本
- 15. 將HTML標記轉換爲RTF文檔
- 16. 如何將wiki標記轉換爲RTF?
- 17. 將標記轉換爲百分比
- 18. 將紡織標記轉換爲Markdown?
- 19. 將vuetify標記轉換爲html
- 20. 如何將JSP標記轉換爲SQL
- 21. 將html img標記轉換爲css
- 22. Vue將Unicode轉換爲HTML標記
- 23. 將XML或HTML轉換爲Wiki標記 - 您會選擇哪種方法?
- 24. 如何將輸入轉換爲2位小數位?
- 25. Angular 2輸入NgModel將字符串轉換爲數字
- 26. TCPDF不會將HTML標記轉換爲其輸出
- 27. 輸入選擇2刪除選定
- 28. 將XPath轉換爲CSS選擇器
- 29. 將jquery選擇器轉換爲數組
- 30. 將CSS選擇器轉換爲XPATH
您可能需要詳細說明。我對這個「Select2」一無所知,但是,如果您使用的是jQuery,那麼解決方案並不難。而且,「令牌」不是字符串嗎? – SpYk3HH
我從問題中移除了「jquery」標籤,因爲它與特定的插件有關。 「令牌」是在自動完成字段中表示爲「塊」的字符串。 –
啊,所以他們是「物體」? – SpYk3HH