我正在使用 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/