我对select2.js
不是很熟悉,文档也不那么容易理解。
我有一个Compose Message模块,我有一个带有标记支持的select2
作为邮件收件人的输入。每个keyup都会触发一个ajax,它将查询所有结果WHERE something LIKE '%something%'
。
ajax的结果是这样的(当已经有1个结果时):
[{
id : 12102719,
firstname : "John",
lastname : "Doe"
}]
如果正常显示,它应该是什么样子
echo "<option value='".$sendTo['id']."'>".$sendTo['firstname']." ".$sendTo['lastname']."</option>";
我的HTML是这样的:
<select multiple="true" name="tagRecipients[]" id="tagRecipients" class="form-control select2 input-inline input-xlarge"></select>
我的CI控制器看起来像这样
public function sendToUser() {
$findthis = $this->input->post('findthis');
$this->data['recipients'] = $this->User_model->sendToUser($findthis);
if($this->data['recipients']){
foreach($this->data['recipients'] as $sendTo){
echo "<li id='select2-tagRecipients-result-".$sendTo['school_id']."' class='select2-results__option' role='treeitem' aria-selected='false'>".$sendTo['firstname']." ".$sendTo['lastname']."</li>";
}
} else {
echo "No match found";
}
}
我的脚本看起来像这样
$(document).on('keyup','.select2-search__field',function(){
$('.select2-results__option').remove();
var tosearch = $(this).val();
$.ajax({
type: "POST",
url: BASE_URL+'users/sendtouser',
data: {findthis: tosearch},
success: function(data){
$('#select2-tagRecipients-results').append(data);
}
});
});
问题是无法点击ajax附加的结果。
我相信这是因为我只是手动访问了主题创建的元素。类和ID .select2-results__option
,#select2-tagRecipients-results
,.select2-search__field
都来自于使用FireBug检查元素。在控制器中包含整个echo
行。
基本上,应该发生的是用户可以键入一些关键字,WHERE column_value LIKE '%keywords%'
的结果将显示为选项。然后可以选择多个结果作为收件人。