2

我在 YUI 中有一个数据表。我试图让表忽略所有 keyEvents。我试过这些方法:

YAHOO.util.Event.addListener(singleSelectDataTable, "keydown", function(oEvent) {
    YAHOO.util.Event.stopPropagation(oEvent); 
});

或者

YAHOO.util.Event.preventDefault(singleSelectDataTable.tableKeyEvent);    

或者

singleSelectDataTable.subscribe('tableKeyEvent', function(oArgs) { 
  YAHOO.util.Event.preventDefault(oArgs.event); 
});

我查看了几个 YUI 示例来拦截点击事件,但它们并没有类比到这个特定场景。如果有帮助,我创建了一个独立的 HTML 测试文件:http: //pastebin.com/khfR4Stk。基本问题是我们不想在表格中支持向上箭头键或向下箭头键;这是一个滚动表,为了使其正常工作,一旦选择超过“显示窗口”,我们就必须调整滚动拇指。

我能想到的唯一其他解决方案是订阅 tableKeyEvent ,然后如果按键是向上箭头,则取消选择新选择的行,选择前一行,对向下箭头进行适当的模拟(基本上撤消按键刚刚做了)。这似乎不是正确的解决方案……</p>

4

3 回答 3

0

在处理了向上/向下箭头键会引发 tableKeyEvent 。因此,试图阻止该事件将无济于事。

查看_onTbodyKeydownDataTable 小部件的功能,我注意到将选择模式设置为无效模式会禁用键箭头键导航。幸运的是,它似乎并没有破坏其他选择处理。至少在你的例子中不是。

所以只需更改selectionMode:"single"为 selectionMode:"" 就可以了 :-) (当然不能保证这将在未来的版本中起作用

于 2011-01-05T20:37:20.123 回答
0

你不能只添加一个事件处理程序,它返回 false 到 keydown 事件吗?

于 2011-01-06T14:20:08.620 回答
0

尝试创建此 onclick 的等效项

function noenter(evt)
{
    var k = evt.keyCode||evt.which;
    return k != 13;
}

获取getCharCode 的语法并告诉脚本当它接收到输入时,它需要拒绝它。

于 2011-01-05T22:06:40.917 回答