2

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

我有一个带有自定义样式按钮(输入类型=按钮)的表单。在文本字段中输入时,我希望人们能够按 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');
            };

      });
};

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

我似乎无法让它为我的生活工作。我究竟做错了什么?有没有更好的解决方案来解决我想要完成的事情?

感谢您抽出宝贵的时间,

阿米克

4

3 回答 3

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');
    };
  });
};

我还发现了这个:抑制非字符键的按键?

当按键不是字符时,不一定会触发按键。所以浏览器可能不会触发退格、F1、向下键等事件。

于 2012-08-22T05:31:15.060 回答
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');
         };
    });
};
于 2012-08-22T05:46:38.907 回答
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');
        };

  });
 };
于 2012-08-22T05:36:19.730 回答