我已将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')