如何忽略Javascript中的keyEvent?

时间:2010-12-28 05:01:17

标签: javascript-events yui-datatable

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

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

OR

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

OR

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

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

我能想到的唯一其他解决方案是订阅tableKeyEvent,然后如果按键是向上箭头,则取消选择新选择的行,选择上一行,为向下箭头执行相应的模拟(基本上撤消按键所做的事情。这似乎不是正确的解决方案......

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

尝试创建此onclick的等效

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

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

答案 2 :(得分:0)

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