如文档中所述,无法向AJAXized Select2添加新选项

时间:2018-07-01 00:49:58

标签: javascript ajax jquery-select2 jquery-select2-4

我已将SELECT2用作电子邮件地址的条目。可以输入它们(然后根据电子邮件地址regexp对其进行验证),也可以从地址簿中选择它们(从AJAX检索的查询)。 现在,我需要以编程方式放置一些地址,并且没有运气,如文档所述正确地添加它们。

Select2的配置如下:

{
    ajax:                   {
        url             : ajaxAddress_searchContacts,
        dataType            : 'json',
        method          : 'POST',
        delay           : 250,
        cache           : true,
    },
    minimumInputLength      : 3,
    tags                        : true,
    tokenSeparators         : [';', ','],
    templateResult          : function(address) {
        if (address.address_name)
            return address.address_name + ' <' + address.email_address + '>';
        return address.text;
    },
    templateSelection       : function(address) {
        if (address.address_name) {
            return $('<span/>')
                .attr({
                    'data-addressid'        : address.id,
                    'data-address_name' : address.address_name,
                    'data-email_address'    : address.email_address
                })
                .text(address.address_name)
                .popover({
                    content             : address.email_address,
                    html                    : true,
                    placement           : 'bottom',
                    trigger             : 'hover',
                })  
        }
        else {
            var emailRegexp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
            if (emailRegexp.test(String(address.text)))
                return address.text;
            else
                return $('<span/>').addClass('mail-invalid').text(address.text);
        }
    },  
}

<select>在HTML中,如下:<select id="select2" multiple></select2>

现在,添加新选项的代码如下:

var option = new Option('Jan Kowalski', '180', true, true);
$('#select2').append(option).trigger('change').trigger({
    type: 'select2:select',
    params: {
        data: {
            id: '180',
            text: 'Jan Kowalski',
            address_name: 'Jan Kowalski',
            addressid: 180,
            email_address: 'test@test.com.pl'
        }
    }
});

您知道那里可能有什么问题吗?
该条目实际上是添加的,但是会立即被错误地验证,并且$('#select2').select2('data')

上的诸如address_name之类的数据不可用。

0 个答案:

没有答案