Ada*_*kis 4 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);
};
Run Code Online (Sandbox Code Playgroud)
它使用我们自己的ajax层,并延迟搜索,直到用户停止输入,它工作正常.唯一的小问题是,如果用户键入一些文本,然后立即在其上退格,我的上一次超时仍将触发,并且将触发ajax请求,并将其忽略.这不会导致任何问题,但它不是最佳的.
是否有任何(最好是非脆弱的)方法来获取当前文本的内容?似乎query发送的对象有一个元素属性,它是我设置select2的原始隐藏输入的jQuery包装,但是没有直接的方法可以看到用户输入的实际文本框.显然我可以检查它并轻松找出dom模式并从隐藏元素构建一个选择器回到用户输入的内容,但我真的很讨厌这样做,因为特定的布局在未来的版本中很容易改变.
那么获取当前输入文本的最佳方法是什么,所以我可以在setTimeout到期时快速检查它,并且我即将运行我的ajax请求.
我正在使用4.0.3,我这样做是这样的:
$( "#mySelect2").数据( "选择2").下拉菜单.$ search.val()
隐藏的输入元素(初始化select2的位置)获取一个data属性select2,该属性包含select2使用的所有元素的引用.所以你可以这样做:
var hiddenInputSelector = '#e1',
select2 = $(hiddenInputSelector).data('select2'),
searchInput = select2.search;
if($(searchInput).val() === '')
clearTimeout(recipientsTimeout);
Run Code Online (Sandbox Code Playgroud)
但这不在文档中,因此将来可能会发生变化.
| 归档时间: |
|
| 查看次数: |
11010 次 |
| 最近记录: |