【问题标题】:Firefox form field stealing focus when another field is clicked单击另一个字段时,Firefox 表单字段窃取焦点
【发布时间】:2015-07-28 02:30:03
【问题描述】:

我在 Firefox 中使用多个文本输入字段的表单时遇到问题。当我单击第二个或第三个输入时,第一个文本输入会抢占焦点。除非我突出显示其他字段之一中的某些内容(在这种情况下它保持焦点),否则会发生这种情况。

以前有人遇到过这个问题吗?

http://codepen.io/anon/pen/jPrPYm

  <div>
    <form action="/forms/SaveResponse" id="qansform" method="post">
      <input id="NavigationType" name="NavigationType" type="hidden" value="Update" />


      <div>
        <div class="question input-select">
          <label>
            <span class="label">Name:</span>
            <input data-rule-maxlength="500" data-rule-required="true" id="FirstTextBox" name="FirstTextBox" type="text" value="" />
            <br />
            <br />
            <span class="label">Contact:</span>
            <input data-rule-maxlength="500" data-rule-required="true" id="SecondTextBox" name="SecondTextBox" type="text" value="" />
            <br />
            <br />
            <span class="label">Phone Number:</span>
            <input data-rule-maxlength="20" data-rule-required="true" id="ThirdTextBox" name="ThirdTextBox" type="text" value="" />
            <br />
            <br />
          </label>
        </div>

        <div class="question input-select">
          <label>
            <span class="label">Date:</span>
            <input class="datefield" data-rule-date="true" data-rule-required="true" id="FourthTextBox" name="FourthTextBox" type="text" value="" />
            <br />
            <br />
          </label>
        </div>
      </div>
      <input type="button" value="Go Back" class="cancel form-submit" onclick="cancelClick()" />

    </form>
  </div>

【问题讨论】:

  • 你能用一个例子创建一个jsfiddle.net吗?
  • 添加了 codepen(jsfiddle 现在对我来说很奇怪 - 不会保存小提琴!)
  • 我在firefox中测试过,无法重现。
  • 这是因为您将整个跨度和输入放在单个标签标签中。这是错误的。检查工作:jsfiddle.net/3n5xbk7p 不工作:jsfiddle.net/3n5xbk7p/1

标签: javascript jquery html forms firefox


【解决方案1】:

问题是您错误地使用了&lt;label&gt; 标签。这是一个如何做到这一点的例子:

<label for="FirstTextBox">
  <span class="label">Name:</span>
</label>
<input data-rule-maxlength="500" data-rule-required="true" id="FirstTextBox" name="FirstTextBox" type="text" value="" />

这是您的示例修复http://codepen.io/anon/pen/NqrqYd

【讨论】:

  • 你完全正确。我的一位开发人员把这个问题交给了我,我完全错过了。谢谢!
  • 知道了这一点,有趣的是Chrome似乎没有任何问题。
  • 是的,由于包含输入字段的标签也是一种有效的语法,我的猜测是chrome以不同的顺序威胁优先级堆栈,来自输入字段的焦点事件可能具有更高的优先级然后是标签中的焦点事件。 codepen.io/anon/pen/NqrqYd
猜你喜欢
  • 2015-09-21
  • 1970-01-01
  • 2013-09-27
  • 2011-04-13
  • 1970-01-01
  • 2013-09-19
  • 2012-11-02
  • 1970-01-01
  • 2011-02-25
相关资源
最近更新 更多