我在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,然后如果按键是向上箭头,则取消选择新选择的行,选择上一行,为向下箭头执行相应的模拟(基本上撤消按键所做的事情。这似乎不是正确的解决方案......
答案 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事件吗?