【问题标题】:Capture click and keystroke events in Javascript, override default behavior?在Javascript中捕获点击和击键事件,覆盖默认行为?
【发布时间】:2011-08-08 15:05:05
【问题描述】:

我已经使用 jQuery 编写了一些 JavaScript 代码,它监听用户在我的页面的不同部分上单击鼠标时是否按住 shift 键。

我的页面上有一个表格。这个想法是用户可以通过单击来选择表中的行。用户可以通过单击一行、按住 shift 并单击另一行来选择多行。 (这就是用户希望选择多行但按住 shift 键的方式,对吧?)

无论如何,我的代码可以在 Internet Explorer 中运行,但我遇到了问题。我的代码读取了用户的选择,但浏览器同时突出显示了两个鼠标单击位置之间的文本。

我怎样才能使我的代码可以根据用户点击选择行并且浏览器不选择文本?

更新我尝试了以下代码:
$('tr').bind('mousedown',function() { return false; } );

在我的页面中使用此代码,当我单击一行时,按住 shift 并单击另一行,两行之间的文本会突出显示。这就是我想要压制的。请注意,文本突出显示之前我释放鼠标按钮。

更新 #2 我尝试了以下代码:

   $('tr').bind('mousedown',function(e) { 
   e.preventDefault();
   return false;
   });

不幸的是,这似乎根本没有任何作用。

【问题讨论】:

    标签: javascript events event-handling jquery


    【解决方案1】:

    这是您要抑制的 mousedown 事件。

    看看event.stopPropogation()event.preventDefault()

    【讨论】:

    • Hmmm.... 我成功地将这种技术用于contextmenu 事件。我用 .click 事件尝试过;现在我用 mousedown 试试。
    【解决方案2】:

    事件处理程序的返回值被规范忽略(jQuery 可能会附加一些东西)。

    您可能正在寻找preventDefaultreturnValue(这正是由于忽略了处理程序的返回值而发明的)。

    您可能还想查看 CSS3 属性扩展 -moz-user-select: none

    【讨论】:

    • 从 jquery 事件处理程序调用 preventDefaultstopPropogation 返回 false。
    【解决方案3】:

    试试这个

    $(function(){
    
      $("tableSelector").bind('selectstart mousedown',function () { 
          return false; 
      });
    
    });
    

    【讨论】:

    • 你使用的选择器是什么?
    • $('tr') 是我使用的选择器。重复一遍,区分我单击了哪一行没有问题,但我似乎无法覆盖文本选择行为
    • “这个tr的表选择器”是什么意思?
    • 你有这个 tr 所在的表的类名或 id 吗?
    • 那么,你的意思是 $('tr#myTable')?
    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2016-04-07
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2013-06-28
    相关资源
    最近更新 更多