使用css类自动完成: -
$(cssClass).autocomplete({
minLength: 0,
focus: function() {
return false;
},
select: function( event, ui ) {
var cursorPos = $(this).prop('selectionStart');
console.log(cursorPos);// showing the proper cursor value
return false;
},
source: function( request, response ){
var cursorPos = $(this).prop('selectionStart');
console.log(cursorPos);// undefined ...?
}
});
当我尝试使用jssery自动完成时使用css类获取光标位置时,在一个闭包select
中,我能够成功检索当前位置的值但是在source
中完成相同的操作时闭包值为undefined
。
有人可以解释一下为什么会这样吗?以及如何获得价值?
答案 0 :(得分:2)
要获取源中的光标位置,您可以尝试search event method。一旦您在输入/文本区域中键入/更改内容,就会调用此方法,然后只会调用 source 方法。所以,你可以做的是,有一个全局变量 cursorPos
并在 search 方法中,将赋值作为 cursorPos = $(this).prop('selectionStart');
在 source 方法中,您可以获得全局变量 cursorPos
值。
您的代码可以修改为,
var cursorPos; // global var
$(cssClass).autocomplete({
minLength: 0,
focus: function() {
return false;
},
select: function( event, ui ) {
var cursorPos = $(this).prop('selectionStart');
console.log(cursorPos);
return false;
},
source: function( request, response ){
console.log(cursorPos); // refers the global var and returns the cursor pos
// add your logic
},
search: function( event, ui ){
cursorPos = $(this).prop('selectionStart');
}
});
通过这种方式,您可以在source方法中获取光标位置:)