2
我正嘗試使用freeform
文本選項將文本附加到select2
中添加的任何新值中。附加文本我想設置選擇元素(在我的情況下通過mvc幫手)。Select2 templateResult數據沒有可供引用的元素
問題是進入templateResult的數據沒有元素。在我搜索的任何地方,data.element用於進入DOM,但它不適合我,我不知道爲什麼。如果我查看createTag函數,參數也沒有元素。容器也僅僅是一個「李」,顯然還沒有在這裏,沒有孩子或父母。
這裏是代碼:
$('.custom-dropdown').each(function() {
$(this).css('width', '100%');
if ($(this).hasClass('freeform')) {
$(this).select2({
tags: true,
createTag: function(params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function(data, container) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
//data.element is undefined here!!!
}
}
return $result;
},
placeholder: "Press ENTER for list of options",
allowClear: true,
selectOnClose: true
});
} else {
$(this).select2({
placeholder: "Press ENTER for list of options",
allowClear: true,
selectOnClose: true,
});
}
$(this).on('select2:select', function(e) {
if (e.params.data.text != '') {
var id = $(this).attr('id');
var select2 = $("span[aria-labelledby=select2-" + id + "-container]");
select2.removeAttr('style');
}
}); $(this).on('select2:close', function() {
$(this).focus();
});
});
選擇的一個例子是:
選擇class="custom-dropdown freeform"
data-appendme="blorg"
謝謝,這只是一個小小的修改。 data.newOption的templateResult檢查是不必要的,因爲文本已經準備好設置,並且由於它們沒有被設置爲newOption,所以它消除了所有現有的下拉項目。所以只要刪除,如果塊和返回$結果是完美的。 – Alex
@blackmiaool,爲什麼當我輸入第一個字符時,立即創建(並選擇)一個新標籤? – beaver