我想为按键事件提供二合一的解决方案。

如果我按下Enter键,并且网站中没有任何表单元素处于活动状态,我想提醒AAA
否则提交活动表格。我怎样才能做到这一点?

$(document).bind('keypress', function(e) {
        if(e.keyCode==13){
            e.preventDefault();
            alert("AAA");
        }
}); // the enter key hitted and alerted AAA


但是我如何检查表格的状态呢?这是一个简单的mailsender表单,包含4个字段,3个输入1个textarea。

通过Raj的评论,这是一个很好的解决方案:

jQuery.fn.fadeToggle = function(speed, easing, callback) {
   return this.animate({opacity: 'toggle'}, speed, easing, callback);
};

var hotkeys = true;
$(document).bind('keypress', function(e) {
    if((e.keyCode==13) &&(hotkeys == true)){
        e.preventDefault();
        $("#boxforfadein").fadeToggle();
    }
});
$("form *").live("focusin", function(){
    hotkeys = false;
    console.log("hotkeys off");
    return hotkeys;
});
$("form *").live("focusout", function(){
    hotkeys = true;
    console.log("hotkeys on");
    return hotkeys;
});

最佳答案

使用focusfocusout跟踪表单是否具有焦点并显示适当的警报。

还有document.activeElement,但我不太确定是否所有浏览器都支持它

09-10 02:47