jquery自动完成回调中文本框中的游标位置?

时间:2014-05-08 14:23:43

标签: javascript jquery closures

使用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

有人可以解释一下为什么会这样吗?以及如何获得价值?

1 个答案:

答案 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方法中获取光标位置:)