【问题标题】:Keeping a text field in focus使文本字段保持焦点
【发布时间】:2014-04-20 20:00:07
【问题描述】:

我认为这在不寻求帮助的情况下很容易做到,但我想不是。添加 autofocus="true" 标记在页面最初加载时起作用,但如果有人单击任何位置或打开链接,则文本字段会失去焦点。如何强制字段保持焦点?

【问题讨论】:

  • 你为什么要这样做?
  • @mat - 有时 clients 请求愚蠢、愚蠢的事情......你不能责怪程序员 :)

标签: javascript jquery ajax forms


【解决方案1】:

有人问你为什么要这么做。 答案当然是作为开发人员,我们需要处理客户的疯狂需求:)

回答:

$(document).ready(function(){

    $(document).click(function() { $("<THE-ELEMENT>").focus() });
});

在这种情况下,我们将监听器添加到文档中的所有元素:)

【讨论】:

    【解决方案2】:

    在文档上附加一个单击事件侦听器,单击时焦点位于输入框上。

    $(document).on("click", function()
    {
         $("yourInputIdHERE").focus();
    }
    

    【讨论】:

      【解决方案3】:
      $("#textbox").focus().on('blur', function() {
          $(this).focus();            
      });
      

      【讨论】:

      • 这是迄今为止最好的答案。您(OP)将希望绑定一个“onblur”事件,以便每次它失去焦点。它重新获得它。每个其他的答案都是……不太可能。
      【解决方案4】:

      处理所有情况,以防某些事件被阻止传播到文档。同时处理用户切换标签并返回的情况。

      $("#element").blur(function ()
      {
          $("#element").focus();
      });
      $(document).bind('keydown mousedown mouseup click',function ()
      {
          $("#element").focus();
      });
      

      【讨论】:

        【解决方案5】:

        您可能想要尝试将事件处理程序附加到blur 事件。捕获它后,您只需在最初失去焦点的同一元素上触发焦点事件。

        $("input").on('blur',function(){
           $(this).focus();
        }); 
        

        您可能希望将此与某种形式的验证结合起来,以便用户输入所需的值后,他们将能够离开文本字段。

        $("input").on('blur',function(){
           var $this = $(this);
           if ($this.val() == ''){
             $this.focus();
             showErrorMessage("Please enter a value");
           }
        }); 
        

        如果您不实施某种形式的标志来启用/禁用此行为,您将永远将用户锁定在一个字段中。他们没有(简单的)方法可以移动到页面的不同区域。

        Here is a small demo,
        您会注意到,一旦文本字段获得焦点,它将一直保持到输入值为止。

        【讨论】:

        • @com - 该示例不起作用,因为您忘记为 id 选择器放置 # 并且因为您没有包含 jQuery :) Check out this fixed version
        • 它在加载时有焦点,但是当我点击任何地方时它会丢失它
        • 即使在我发布的链接上?请注意,您在我在上一条评论中提到的 jsfiddle 示例中犯了一些错误。
        猜你喜欢
        • 1970-01-01
        • 2021-01-25
        • 1970-01-01
        • 2020-03-18
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多