Javascript 在每次按键时从ajax填充select2
我不是很熟悉,文档也不是那么容易理解 我有一个撰写消息模块,我有一个Javascript 在每次按键时从ajax填充select2,javascript,php,jquery,ajax,jquery-select2,Javascript,Php,Jquery,Ajax,Jquery Select2,我不是很熟悉,文档也不是那么容易理解 我有一个撰写消息模块,我有一个select2,支持标记作为消息接收者的输入。每个keyup都将触发一个ajax,它将查询所有结果,其中类似于“%something%” ajax的结果如下(当已有1个结果时): 如果正常显示,它应该是什么样子 echo "<option value='".$sendTo['id']."'>".$sendTo['firstname']." ".$sendTo['lastname']."</option>"
select2
,支持标记作为消息接收者的输入。每个keyup都将触发一个ajax,它将查询所有结果,其中类似于“%something%”
ajax的结果如下(当已有1个结果时):
如果正常显示,它应该是什么样子
echo "<option value='".$sendTo['id']."'>".$sendTo['firstname']." ".$sendTo['lastname']."</option>";
问题是不能单击ajax附加的结果
我相信这是因为我只是手动访问了主题创建的元素。类和ID.select2-results\uu选项
,#select2-tagRecipients-results
,.select2-search\uu字段
都来自使用FireBug检查元素。包括控制器中的整个echo
行
基本上,用户可以输入一些关键字,结果显示为
,其中列的值(如“%keywords%”)将显示为选项。然后可以选择多个结果作为收件人。尝试阅读并注意返回插件所需的结构。因此,我应该调用$(“.js数据示例ajax”)。选择2({
on('keyup')
?我应该保留。选择2-search\u字段作为选择器(它是动态创建的)不!!ajax
选项自己做。你可以设置keypress
的delay
和更多,但是让插件来做这项工作,因为他做得更好。阅读它可能会帮助你。我的Controller
应该是什么样子?我的HTML和脚本现在看起来当然是这样了。你的控制器需要返回一个json
但不是html
内容。你的json
需要像我发布的问题一样。比如:[{“itemName”:“测试项目编号1”,“id”:5}]
。我找到了一个select2
和php
。如果你同意,请告诉我。
echo "<option value='".$sendTo['id']."'>".$sendTo['firstname']." ".$sendTo['lastname']."</option>";
<select multiple="true" name="tagRecipients[]" id="tagRecipients" class="form-control select2 input-inline input-xlarge"></select>
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);
}
});
});