我的页面上有Select2 Javascript小部件。
$('#order_address_select').select2({
placeholder: "Select adress",
ajax: {
url: '<?=Yii::app()->getBaseUrl(true)?>/order/getplacemarklist',
dataType: 'json',
},
tags: true,
});
当我输入一些文本时,如果在数据库中找不到它而没有通过ajax加载,我可以选择它,因为属性tags
被设置为true
。然后我有以下代码
$('#order_address_select').change(function () {
alert($("#order_address_select option[data-select2-tag='true']").val());
});
问题是当我输入文字并选择它作为标签时,事件第一次不会触发。但是当我再次键入文本并选择它时,代码会提醒先前选择的选项的值。例如:我正在打字&#34; aaa&#34;,选择它,没有任何反应,然后我打字&#34; bbb&#34;,选择它,并通过&#34获得警报; AAA&#34;
答案 0 :(得分:1)
所以,如果有人有兴趣,我在select2 github存储库上找到了解决方案,你只需要向<option></option>
添加一个空的<select>
。然后它会正常工作
答案 1 :(得分:0)
在我的更改处理程序中,我将选中的选项作为
var data = $(this).select2("data")[0];
像这样:
$selectXXXXX.on('change', function (e) {
var data = $(this).select2("data")[0];
var cfg = configuraciones[data.id];
app.usersFocusChange(data.id, cfg);
});
答案 2 :(得分:0)
您可以通过操作 html 来解决它:
$('#yourselect2').append("<option selected value='your_val'>your_text</option>");