2013-08-28 37 views
3

我需要让按钮在按下键盘按钮时进入.active状态,而不仅仅是点击时。将按钮状态设置为使用jQuery

这里是我的代码...在此先感谢。

脚本:

$(document).on('keypress', function (e) { 
    var tag = e.target.tagName.toLowerCase(); 
    if (e.which === 119 && tag != 'input' && tag != 'textarea') 
     $('#forward').click(); 
    if (e.which === 115 && tag != 'input' && tag != 'textarea') 
     $('#back').click(); 
    if (e.which === 97 && tag != 'input' && tag != 'textarea') 
     $('#left').click(); 
    if (e.which === 100 && tag != 'input' && tag != 'textarea') 
     $('#right').click(); 
}); 

$(function() { 
    $("#forward").click(function() { 
     $.ajax('/forward'); 
    }); 
    $("#back").click(function() { 
     $.ajax('/back'); 
    }); 
    $("#left").click(function() { 
     $.ajax('/left'); 
    }); 
    $("#right").click(function() { 
     $.ajax('/right'); 
    }); 
}); 

HTML:

<ul class="button-list"> 
<li> 
    <button id="forward">W</button> 
</li> 
<li> 
    <button id="back">S</button> 
</li> 
<li> 
    <button id="left">A</button> 
</li> 
<li> 
    <button id="right">D</button> 
</li> 
</ul> 

............................ .................................................. .....

+0

你的意思是:active state as css pseudo class? – Alex

+0

对不起,是的,这是正确的。 – user1919580

+0

目前,css动画不能在按键上运行。 – user1919580

回答

1

我不知道没有你的意思“SET按钮。活跃”,但例如,你可以通过这个代码触发其点击:

$(document).keypress(function(e){ 

    if(e.keychar == 'w') 
    { 
     $("#forward").trigger('click'); 
     //You can do any thing here ex. "set button state Active" 
     //$("#forward").addClass('active'); 
    } 
    else if(e.keychar == 's') 
     $("#back").trigger('click'); 
    else if(e.keychar == 'a') 
     $("#left").trigger('click'); 
    else if(e.keychar == 'd') 
     $("#right").trigger('click'); 

}); 
6

你必须创建一个classstyle相同的:active状态button这样的:

一般例子

.buttonclass:active , .activated { /* somestyle */ } 

$('.buttonclass').on('click', function(){ 
    $(this).addClass('activated'); //eventually removeClass of some previous class 
    //other stuff 
}); 

代码

CSS

#forward:active, .forwardactivate{} 
#back:active, .backactivate{} 

或者,如果你有一个ul li buttonstyle然后你要做的:

ul li button:active, .activatebutton {} /* style*/ 

JAVASCRIPT

 $(function() { 
      $("#forward").click(function() { 
       $.ajax('/forward'); 
       if($(this).hasClass('forwardactivate')) 
       $(this).removeClass('forwardactivate'); //change with .activatebutton 
       else  
       $(this).addClass('forwardactivate'); 
      }); 

      //etc 
    }); 
+0

正是我在找什么,谢谢! – user1919580

+0

但是现在我有了下面的内容,但是在按下它之后它仍然保留在激活的类中。 '$ .ajax('/ forward'); $('button')。removeClass('active'); $(this).addClass('active');' – user1919580

+0

已编辑。如果你认为是正确的答案,请接受它:) – steo

0

你不能根据页面中添加。主动类...说如果你在/转发添加.active转发...或者你也可以这样做:

$("#forward").click(function() { 
     $.ajax('/forward'); 
     $('button').removeClass('active'); 
     $(this).addClass('active'); 
}); 
+0

'button'选择器应该是'.button' – Isius