首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >右键单击jquery

右键单击jquery
EN

Stack Overflow用户
提问于 2011-02-06 16:34:35
回答 3查看 1.4K关注 0票数 1

我正在尝试创建一个上下文菜单,当我右击文本框时,当我单击时,我可以使用鼠标进行选择,但我也需要使用向上键和向下键。

代码语言:javascript
复制
 $(window).load(function(){
$(document).bind("contextmenu", function(event) { 
    event.preventDefault();
    $("<div class='custom-menu'>Custom menu</div>")
        .appendTo("body")
        .css({top: event.pageY + "px", left: event.pageX + "px"});
}).bind("click", function(event) {
    $("div.custom-menu").hide();
});
}).bind("keyup",function(event) {
   $("div.custom-menu").hide();
});
 }).bind("keydown",function(event) {
   $("div.custom-menu").hide();
});
  });

html

代码语言:javascript
复制
 input type="text" name="firstbox" id="firstbox" onclick="append()"

这里右击在整个页面上起作用,因为我已经给出了正文,如何在文本框上起作用。

EN

回答 3

Stack Overflow用户

发布于 2011-02-06 16:43:43

如果您只想要一个文本框,则只将其绑定到您希望文本框,如下所示:

代码语言:javascript
复制
$("#yourtextboxid").bind(

对于向上键和向下键,我认为你需要将它绑定到整个文档,然后使用一些标志或自定义变量来确定当你向上或向下时是否应该做任何事情!

你有没有尝试过这样的东西(快捷键和快捷键)?

代码语言:javascript
复制
.bind("keypress",function(event){
   var key=event.keyCode || event.which;
   if(key==38){ //UP

   }
   else{if(key==40){ //DOWN

   }}
}
票数 3
EN

Stack Overflow用户

发布于 2014-03-13 00:13:32

代码语言:javascript
复制
$('#div1,#div2').on('contextmenu', function (e) {
    e.stopPropagation();
    e.
    $('#log').append('<p>' + e.target.id + ' triggered contextmenu!</p>');
    return false;
});

在结尾处添加return false。它将不允许显示上下文菜单

票数 2
EN

Stack Overflow用户

发布于 2011-02-07 02:13:40

这比仅仅将所有内容绑定到文档要复杂一点。我为你准备了a demo,里面有很多评论。

这是基本思想:

  • 输入框查找上下文菜单和菜单键(导航、选择和取消)事件。
  • 内容菜单查找鼠标事件
  • 文档查找键和鼠标事件以关闭menu

此代码的唯一要求是每个输入都需要一个惟一的标识符(本例中为ID)。

下面是脚本:

代码语言:javascript
复制
$(document).ready(function(){

  // cache menu object
  var contextMenu = $(".custom-menu"),
   // select menu item (handles selected class)
   selectItem = function(el){
    el
    .addClass('selected')
    .siblings()
    .removeClass('selected')
   },
   // add menu item text to input - or whatever you wanted to do
   addItem = function(item){
    // select item
    selectItem( item );
    var txt = item.text();
    // data-id attribute has the input ID where it is attached
    $('#' + contextMenu.attr('data-id')).val( txt );
    contextMenu.fadeOut('slow');
   };

  $(".inputbox")
   .bind("contextmenu", function(event){
    event.preventDefault();
    var $this = $(this);
    contextMenu
     // save ID of input for addItem function
     .attr('data-id', this.id)
     // position the menu below the input box, not at the mouse position
     .css({
      top: $this.position().top + $this.outerHeight() + "px",
      left: $this.position().left + "px"
     })
     .show();

    // resets the selected menu item to the first item
    selectItem( contextMenu.find('li').eq(0) );

  })
  .bind("keyup", function(event){

    // escape closes the menu
    if (event.which === 27) { contextMenu.fadeOut('slow'); return; }

    // ignore key inside input if menu is hidden or key is not up, down or enter
    if (contextMenu.is(':hidden') || event.which !== 38 && event.which !== 40 && event.which !== 13) { return; }

    // get menu items
    var items = contextMenu.find('li'),
     sel = contextMenu.find('.selected'),
     item = items.index(sel);

    // enter was pressed, add selected item to input
    if (event.which === 13) { addItem( sel ); return; }
    // up arrow pressed
    item += (event.which === 38 && item - 1 >= 0) ? -1 : 0;
    // down arrow pressed
    item += (event.which === 40 && item < items.length - 1) ? 1 : 0;
    // select menu item
    selectItem( items.eq(item) );

  });

  // Context menu: hide and make the choices clickable
  contextMenu
   .hide()
   .find('li')
   .bind('click', function(){
    addItem( $(this) );
   })
   .hover(function(){
    $(this).addClass('hovered');
   },function(){
    $(this).removeClass('hovered');
   });

  $(document).bind("click keyup", function(event) {
    // ignore if this happens inside an inputbox class
    if (!$(event.target).is('.inputbox')) {
      contextMenu.hide();
    }
  });

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4912368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档