select2 ajax 执行了2次
Select2 ajax is executed 2 times
我有一个脚本可以从后端获取一些数据并填充 select2 下拉列表。问题是 ajax 调用总是被调用 2 次,它不应该是这样的。我不确定我做错了什么......任何帮助都会受到赞赏。
这是我的代码:
var select2Element = $('select').select2({
theme: "classic",
escapeMarkup: function (markup) { return markup; },
});
select2Element.on('select2:opening', function(event) {
var clicked = $(this);
var route = "{{ path('get_attribute_list', {'articleId': 'ARTICLEID', 'attributeGroupId': 'ATTRIBUTEGROUPID'}) }}"
var url = route.replace("ARTICLEID", $(this).attr('data-articleId')).replace('ATTRIBUTEGROUPID', $(this).attr("data-attributeGroupId"));
$.ajax ({
url: url,
dataType: 'json',
async: false,
type: "GET",
}).then(function (data) {
//@TODO get out elements already inserted
for (var d = 0; d < data.length; d++)
{
var item = data[d];
// Create the DOM option that is pre-selected by default
var option = new Option(item.text, item.id, true, true);
// Append it to the select
clicked.append(option);
}
// Update the selected options that are displayed
clicked.trigger('change');
});
});
var inputResult = [];
select2Element.on('select2:select', function(e) {
var jsonValue = {
"articleId": $(this).attr("data-articleId"),
"attributeGroupId": $(this).attr("data-attributeGroupId"),
"attributeId": e.params.data.id
}
inputResult.push(jsonValue);
$('#addAttributes').val(JSON.stringify(inputResult));
});
select2Element.on('select2:close', function() {
$(this).html('');
});
'select2:open' 和 'select2:opening' 中似乎存在错误。有针对此问题的修复程序,但未发布。
无论如何,在解决此问题之前遇到此问题的人可以在此处查看更多详细信息:
https://github.com/select2/select2/issues/3503
并在此处解决此问题:
https://github.com/select2/select2/commit/c5a54ed70644598529a4071672cca4a22b148806
我有一个脚本可以从后端获取一些数据并填充 select2 下拉列表。问题是 ajax 调用总是被调用 2 次,它不应该是这样的。我不确定我做错了什么......任何帮助都会受到赞赏。
这是我的代码:
var select2Element = $('select').select2({
theme: "classic",
escapeMarkup: function (markup) { return markup; },
});
select2Element.on('select2:opening', function(event) {
var clicked = $(this);
var route = "{{ path('get_attribute_list', {'articleId': 'ARTICLEID', 'attributeGroupId': 'ATTRIBUTEGROUPID'}) }}"
var url = route.replace("ARTICLEID", $(this).attr('data-articleId')).replace('ATTRIBUTEGROUPID', $(this).attr("data-attributeGroupId"));
$.ajax ({
url: url,
dataType: 'json',
async: false,
type: "GET",
}).then(function (data) {
//@TODO get out elements already inserted
for (var d = 0; d < data.length; d++)
{
var item = data[d];
// Create the DOM option that is pre-selected by default
var option = new Option(item.text, item.id, true, true);
// Append it to the select
clicked.append(option);
}
// Update the selected options that are displayed
clicked.trigger('change');
});
});
var inputResult = [];
select2Element.on('select2:select', function(e) {
var jsonValue = {
"articleId": $(this).attr("data-articleId"),
"attributeGroupId": $(this).attr("data-attributeGroupId"),
"attributeId": e.params.data.id
}
inputResult.push(jsonValue);
$('#addAttributes').val(JSON.stringify(inputResult));
});
select2Element.on('select2:close', function() {
$(this).html('');
});
'select2:open' 和 'select2:opening' 中似乎存在错误。有针对此问题的修复程序,但未发布。 无论如何,在解决此问题之前遇到此问题的人可以在此处查看更多详细信息:
https://github.com/select2/select2/issues/3503
并在此处解决此问题:
https://github.com/select2/select2/commit/c5a54ed70644598529a4071672cca4a22b148806