每个keyup

时间:2016-02-14 15:01:35

标签: javascript php jquery ajax jquery-select2

我对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%'的结果将显示为选项。然后可以选择多个结果作为收件人。

0 个答案:

没有答案