阻止页面响应页面滚动的pageup / pagedown事件

时间:2010-03-11 10:15:58

标签: jquery

我在我的一个项目中使用jquery。我有一个场景,我必须将键盘事件添加到表的td单元格中以在其中上下移动。我能够使用以下代码实现此目的。

这是我的代码:

<script type="text/javascript">
 var tds = jQuery("#myTable td");
 tds.bind('keyup', function(event){        
      var key = event.which;
      moveSelection(key, jQuery(this), tds);
      event.preventDefault();                        
 });
 function moveSelection(key, current_td, all_tds){    
    var index = parseInt(current_td.attr("id"));        
    if (key == 13) {           //Enter Key
        current_td.click();
      } else if(key == 38) {   //Page Up Key         
        if(all_tds[index - 1]){
            all_tds[index - 1].focus();
        }
      } else if(key == 40) {   //Page Down Key
          if(index < all_tds.length){
            var next_index = index + 1;
            if(next_index < all_tds.length){
                all_tds[index + 1].focus();
            }                
         }
    }            
}    

如果页面没有滚动条,我可以在td单元格中移动。但是当页面有滚动条时,当我使用PageUp / PageDown键时会发生两件事。

  1. 我的页面根据按下的键向上/向下滚动。()
  2. 根据按下的键,相应的td选择移动/向上。
  3. 在第一种情况下,可能是因为事件被绑定到页面以及我的表tds。我怎么能阻止这个。当我处理我的桌子时,我不希望我的页面滚动。我尝试了很多但失败了。在这里寻求帮助。

    任何帮助都非常感谢..提前致谢...

1 个答案:

答案 0 :(得分:0)

尝试在每个键句柄处添加“return false”。 或者这一个:

if(event.stopPropagation) {
 event.stopPropagation(); // standard browsers
} else {
 event.cancelBubble = true; // IE
}