1

可能重复:
jQuery keypress() 事件未触发?

我使用 wordpress 作为我的 cms

我也在开发一个投票系统

这是我用于投票功能的 jquery

如何在按键事件上运行此功能?

例如,如果有人按“A”键,此功能会自动运行

我google了至少半小时,但没有找到任何相关结果

 <script type="text/javascript">
/* <![CDATA[ */ 
(function($) {
 function setCookie(name,value,days) {
 if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}

function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
 }

 $(document).ready(function(){
 $("body").on('click', '.vote-btn:not(.disabled)', function () { 
 var el = $(this),
    nonce = $("input#voting_nonce", el.parent()).val(),
    id = el.attr('id').replace(/vote-/, ''); // get the Post ID

 el.html('<span id="loader"></span>');
 var data = {
    action: 'add_votes_options',
    nonce: nonce,
    postid: id,
    ip: '<?php echo $_SERVER['REMOTE_ADDR']; ?>'            
};
 $.post('<?php echo admin_url('admin-ajax.php'); ?>', data,
function(response){
 console.log( response );

     if(response!="-1") {

el.html('<img src="<?php get_bloginfo('url'); ?>/wp- content/themes/9GAG/happysimily.png">').unbind('click').addClass('clickedyellow');
 $('.vote-btn', el.closest('div')).addClass('disabled');
 $("#vote", el.closest('article')).addClass('clickedlove'); 



        if(response=="null") {
            alert("A vote has already been registered to this IP address.");

        } else {
            $("#votecounter", el.closest('article')).html(response); 


        }
        var cookie = getCookie("better_votes");
        if(!cookie) {
            var newcookie = id;
        } else {
            var newcookie = cookie + "," + id;
        }
        setCookie("better_votes", newcookie, 0);
    } else {
        alert("There was a problem registering your vote. Please try again later or enable browser cookies.");
    }

 });

 return false;
});

 })
 })(jQuery);




 /* ]]> */
 </script>
4

2 回答 2

3

需要为 keypress(或 keyup、keydown 等)添加事件监听器

$(document).keypress(function(e) {
 if (e.keyCode == 65) {              // "A" key
  //code.... 
 }
});
于 2013-01-21T07:50:15.570 回答
2

您可以通过不同的方式捕获按键,简单的一种是使用 Jquery 默认的一种,

。按键()

因此,您需要将您的功能块附加到功能名称。这应该在您的文档就绪函数中,因为您的投票函数不是全局的并且仅在就绪上下文中。

(function($) { 

   var yourVotingFn = function(){
          .........//your code logic
    }

   $(body).keypress(function(event) {
     if ( event.which == 13 ) {//Enter key
       yourVotingFn();
     }
   });

});
于 2013-01-21T07:53:52.487 回答