Keypress在jQuery中更改类

时间:2012-08-22 05:25:10

标签: javascript jquery html dom dom-events

我有一个问题,我似乎无法解决。

我有一个带有自定义样式按钮的表单(输入类型=按钮)。在文本字段中输入内容时,我希望人们能够按TAB键并转到按钮。但是,它不会使用制表符索引,因此我的解决方案是突出显示标签并更改CSS以使按钮具有新的边框颜色。但是,除了Firefox之外,任何浏览器中的按键边框颜色都不会改变。

这就是我所拥有的:

$(function() {
    $("#email").bind("keypress", function(e) {
            if (e.keyCode == 13) {
                send();
                return false; 

            };

            if (e.keyCode == 9) {
                    $("#submit_btn").removeClass('submit1').addClass('submit1after');
            };

      });
};

第一个输入按键是序列化并通过电子邮件发送表格和所有内容。

我似乎无法让它为我的生活而工作。我究竟做错了什么?是否有更好的解决方案,我正在努力实现的目标?

感谢您抽出宝贵时间,

阿米克

3 个答案:

答案 0 :(得分:3)

使用keydown代替,对我有效(请参阅演示:http://jsfiddle.net/npGtX/2/

$(function () {
  $("#email").bind("keydown", function (e) {
    if (e.keyCode == 13) {
      send();
      return false;    
    };

    if (e.keyCode == 9) {
      $("#submit_btn").removeClass('submit1').addClass('submit1after');
    };
  });
};

我也发现了这个:Suppressing keyPress for non-character keys?

  当按键不是a时,

按键不一定被触发   字符。因此浏览器可能不会触发退格事件F1,   向下键等。

答案 1 :(得分:1)

您可以使用keyup事件和event对象的which属性,jQuery规范化which属性并且它是跨浏览器:

$(function() {
    $("#email").bind("keyup", function(e) {
         if (e.which == 13) {
            send();
            return false; 
         };   
         if (e.which == 9) {
            $("#submit_btn").toggleClass('submit1 submit1after');
         };
    });
};

答案 2 :(得分:0)

 $(function() {
$("#email").keypress(function(e) {
        if (e.keyCode == 13 || e.which== 13) {
            send();
            return false; 

        };

        if (e.keyCode == 9 || e.which== 9) {
                $("#submit_btn").removeClass('submit1').addClass('submit1after');
        };

  });
 };