jQuery在keydown上的文本框中选择文本

时间:2013-05-01 02:32:52

标签: javascript jquery asp.net

有点jQuery的问题。我正在尝试实现类似于excel导航方式的数据输入网格,使用向上和向下箭头遍历列。我有一个在加载时运行的脚本,为每个文本框分配一个rel属性和唯一ID,如下所示:

id="gScore_0" class="gScoreTB" rel=0
id="gScore_1" class="gScoreTB" rel=1
id="gScore_2" class="gScoreTB" rel=2

......等等。然后,我有以下处理程序:

    $('.gScoreTB').keydown(function (e) {

        var keyCode = e.keyCode || e.which,
            arrow = { left: 37, up: 38, right: 39, down: 40 };

        switch (keyCode) {

            case arrow.up:

                var str = $(this).attr('rel');
                str = parseInt(str) - 1;
                $("#gScore_" + str).focus();
                break;

            case arrow.down:
                //Set focus to the same cell next row
                var str = $(this).attr('rel');
                str = parseInt(str) + 1;
                $("#gScore_" + str).focus();

                break;
        }
    });

理论是该函数从ID中添加/减去1并将焦点设置到该文本框。这一切都很棒。

问题在于我希望专注于更改框中的所有文字以便全部选中。除了.select()之外,我已尝试在文本框中使用.focus()的各种组合,但它没有发生。我怀疑它与事件有关,但我不是jQuery的天才。请帮忙!感谢

PS如果有人认为我所做的事情是荒谬的,我总是会批评/改进: - )

1 个答案:

答案 0 :(得分:1)

好的,事实证明我只是没有正确编码。我需要阻止事件冒泡DOM,并阻止文本框上的默认操作,如下所示:

e.preventDefault();
e.stopPropagation();

或者,正如我后来发现的那样,可以使用return false;,这与调用上述内容相同。简单!一旦我在事件中添加了这些,就在文本框中停止了,所以其他方法正常工作。 Here is a link我问的其他问题回答了传播问题。