有点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的天才。请帮忙!感谢
答案 0 :(得分:1)
好的,事实证明我只是没有正确编码。我需要阻止事件冒泡DOM,并阻止文本框上的默认操作,如下所示:
e.preventDefault();
e.stopPropagation();
或者,正如我后来发现的那样,可以使用return false;
,这与调用上述内容相同。简单!一旦我在事件中添加了这些,就在文本框中停止了,所以其他方法正常工作。 Here is a link我问的其他问题回答了传播问题。