select2'更改'事件第一次没有触发

时间:2018-01-23 16:15:50

标签: javascript jquery jquery-select2

我的页面上有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;

3 个答案:

答案 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); 
});

Ref: select2 dox

答案 2 :(得分:0)

您可以通过操作 html 来解决它:

$('#yourselect2').append("<option selected value='your_val'>your_text</option>");