javascript - select2 - 获取当前搜索文本

标签 javascript jquery-select2

我正在使用 select2 并使用此查询函数从服务器获取可用选项

var recipientsTimeout;
this.loadRecipients = function (query) {
    clearTimeout(recipientsTimeout);
    recipientsTimeout = setTimeout(function(){
        data.transmitRequest('lookupcontacts', { search: query.term }, function(resp){
            query.callback({ results: resp.items });
        });
    }, 500);
};

它使用我们自己的 ajax 层,并延迟搜索直到用户停止输入,并且工作正常。唯一的小问题是,如果用户键入一些文本,然后立即退格,我最后的超时仍然会触发,并且会触发 ajax 请求,但会被忽略。这不会造成任何问题,但不是最佳选择。

是否有任何(最好是非脆弱的)方法来获取当前文本是什么?似乎发送的 query 对象有一个 element 属性,它是我设置 select2 的原始隐藏输入的 jQuery 包装器,但是我没有直接的方法可以看到获取实际的文本框显然我可以检查它并轻松找出 dom 模式并构建一个从隐藏元素返回到用户正在输入的选择器,但我真的很讨厌这样做,因为特定的布局很容易 future 版本中的更改。

那么获取当前输入的文本的最佳方式是什么,这样我就可以在 setTimeout 到期时快速检查它,并且我即将运行我的 ajax 请求。

最佳答案

我使用的是 4.0.3,我的做法是这样的:

$("#mySelect2").data("select2").dropdown.$search.val()

关于javascript - select2 - 获取当前搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097537/

相关文章:

jquery - 将 Select2 应用到 Slickgrid 编辑器

javascript - select2 (v4.0.0) - 链式选择不起作用?

javascript - Angularjs 自定义 select2 指令

javascript - 如何使用 onchange="function(this.value)

javascript - Google 图表错误 - 不会显示第二个图表

javascript - 替换 HTML 中的所有单词

javascript - 我怎样才能生成一个文件并以纯 javascript 提供下载?

javascript - 通过javascript更改特定select2的背景颜色

javascript - 在 express 中将新的 select2 选项标签写入本地数据库

javascript - 禁用鼠标滚轮向上或向下滚动