如何在keypress事件上运行一个函数

时间:2013-01-21 07:44:05

标签: javascript jquery wordpress

  

可能重复:
  jQuery keypress() event not firing?

我使用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>

2 个答案:

答案 0 :(得分:3)

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

$(document).keypress(function(e) {
 if (e.keyCode == 65) {              // "A" key
  //code.... 
 }
});

答案 1 :(得分:2)

你可以用不同的方式捕获按键,简单的是使用Jquery默认的一个,

.keypress()

所以你需要将函数块绑定到函数名。这应该在你的文档就绪功能中,因为你的投票功能不是全局的,只有在准备就绪的情况下。

(function($) { 

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

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

});