在jquery自动完成项目中鼠标单击时将焦点移动到下一个输入

时间:2014-03-30 08:18:46

标签: jquery jquery-autocomplete

我有jQuery autocomplete附加到文本框,当我按输入选择autocomplete项时,它会聚焦下一个输入。但是当我通过鼠标click选择项目时,它会聚焦第一个输入而不是下一个输入。

我的输入是ASP.Net输入,每个输入都有tabindex

到目前为止,我所尝试的是

jQuery代码:

$("#txtArea").autocomplete({
    source: function (request, response) {
        var outputList = LoadAutocompleteResult(areaNameList, request.term);
        response(outputList);
    },
    close: function () {
        var ti = $("#txtArea").attr('tabindex') + 1;
        $('[tabindex=' + ti + ']').focus();
    }
});

还尝试了以下

$("#txtArea").autocomplete({
    source: function (request, response) {
        var outputList = LoadAutocompleteResult(areaNameList, request.term);
        response(outputList);
    },
    select: function () {
        var ti = $("#txtArea").attr('tabindex') + 1;
        $('[tabindex=' + ti + ']').focus();
    }
});

1 个答案:

答案 0 :(得分:0)

大多数JavaScript引擎会对待:

var ti = $("#txtArea").attr('tabindex') + 1;

作为连接而不是添加,因此ti变量的"1"附加了它的初始值。解决方案是在尝试递增数字之前将ti解析为数字,或者使用专门设计用于递增它的运算符(将字符串转换为过程中的数字)。

var ti = parseInt($("#txtArea").attr('tabindex'), 10) + 1;

var attr = $("#txtArea").attr('tabindex'),
    ti = attr++; // caveat here is that, if ti = 1, attr will be 2

否则您将尝试关注$('[tabindex=11]'),而不是$('[tabindex=2]');

工作演示:http://jsfiddle.net/XfPen/