Добавление эффекта «нажатия кнопки» при нажатии клавиши с помощью JQuery? - PullRequest
1 голос
/ 21 июля 2011

Как добавить эффект «кнопка вниз», когда кнопка выбрана и нажата клавиша?Поведение фактического нажатия работает, просто никакого эффекта не отображается.

Если быть более точным: у меня есть набор кнопок, которые можно перемещать с помощью клавиш со стрелками влево и вправо.И когда нажата клавиша Enter, выбранная в данный момент кнопка будет работать в режиме «щелчка мышью».

Спасибо!

Ответы [ 3 ]

0 голосов
/ 21 июля 2011

Попробуйте это

$("button").click(function(){

      $(this).animate({ marginLeft: "2px", marginTop: "2px" }, 100, function(){ 
         $(this).css({marginLeft:"0px", marginTop:"0px"});
         //On click logic goes here
      });

    }).keyup(function(e){

      if(e.which == 13){
        $(this).trigger('click');
      }
    });
0 голосов
/ 21 июля 2011

Вот пример скрипки: http://jsfiddle.net/maniator/DBLem/

var index = 0;
var buttons = $('button');
var max = buttons.length - 1;
var buttonOn = buttons.eq(index).addClass('on');

$(document).keydown(function(e) {
    switch (e.keyCode) {
    case 39:
        {
            index++;
            if (index > max) {
                index = 0;
            }
            break;
        }
    case 37:
        {
            index--;
            if (index < 0) {
                index = max;
            }
            break;
        }
    case 13:
        {
            buttonOn.trigger('click');
        }
    }
    buttonOn = buttons.eq(index);
    buttons.removeClass('on');
    buttonOn.addClass('on');
});


$('button').click(function(){
    alert(this.innerHTML);
});
0 голосов
/ 21 июля 2011

Ну, я бы сохранил идентификатор элемента, который в данный момент имеет фокус, и щелкнул по нему, когда пользователь нажал, введите:

var id; 

$("button").focus(function () {
     id = this.id;
});

$(window).keydown(function(e){
    var code = (e.keyCode ? e.keyCode : e.which);
    if (code === 13){
        $('#'+id).click();
    }
});
...