【问题标题】:Setting focus on a button is not working将焦点设置在按钮上不起作用
【发布时间】:2011-12-09 19:00:09
【问题描述】:

当用户在文本框中按下 Enter 键时,我正在尝试将焦点设置为按钮。但它不起作用。我正在使用 Internet Explorer 8 浏览器。我错过了什么吗?

$("input.Box").live('keydown', function(e) {
    if (e.keyCode == 13) {
        e.preventDefault(); 
        $("#button").focus(); // Not working?
    }
});

【问题讨论】:

    标签: jquery setfocus


    【解决方案1】:

    问题是IE响应不够快,所以你需要在进入live函数和调用.focus()之间增加一个小延迟。所以,替换

    $("#button").focus();

    setTimeout(function () {
     $('#button').focus();
    }, 100);
    

    按照 Blender 的建议,结合使用 e.whiche.keyCode 应该可以解决您的问题。

    【讨论】:

      【解决方案2】:

      Microsoft 决定他们不喜欢 e.keyCode,而是拥有自己的语法 e.which

      你必须同时检查:

      $("input.Box").live('keydown', function(e) {
          var keyCode = (window.event) ? e.which : e.keyCode;
      
          if (keyCode == 13)
              e.preventDefault(); 
              $("#button").focus(); // Not working?
          }
      });
      

      【讨论】:

        【解决方案3】:

        你确定这个名字是正确的吗? .NET 有重命名的习惯。您没有指定语言或环境。

        尝试使用类选择器。给按钮一个类名class="Test",然后使用$(".Text").focus()进行选择。

        【讨论】:

          【解决方案4】:

          在尝试设置焦点之前,请确保 DOM 已准备好,元素存在。

          【讨论】:

          • 他没有尝试将按钮集中在文档加载上。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-21
          相关资源
          最近更新 更多