0

一些 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如果有人认为我所做的很荒谬,我总是愿意接受批评/改进:-)

4

1 回答 1

1

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

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

或者,正如我后来发现的那样,可以使用return false;which 与调用上述两者相同。简单的!一旦我在事件中添加了这些,就会在文本框中停止,因此其他方法可以正常工作。这是我问的另一个问题的链接,该问题回答了传播问题。

于 2013-05-07T01:54:27.453 回答