【问题标题】:preventing the page from responding to pageup/pagedown events for page scrolling防止页面响应 pageup/pagedown 事件以进行页面滚动
【发布时间】:2013-09-20 10:34:49
【问题描述】:

我在我的一个项目中使用 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 选择根据按下的键移动/向上。

在第一种情况下,可能是因为事件绑定到页面以及我的表 tds。我该如何防止这种情况。当我处理我的桌子时,我不希望我的页面滚动。我尝试了很多但失败了。在这里寻求帮助。

任何帮助都非常感谢..在此先感谢...

【问题讨论】:

    标签: jquery


    【解决方案1】:

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

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

    【讨论】:

    • 这并没有解决问题。它的行为与以前相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2014-04-28
    • 1970-01-01
    相关资源
    最近更新 更多