【问题标题】:focus() doesn't work with anchor linkfocus() 不适用于锚链接
【发布时间】:2014-02-09 14:24:48
【问题描述】:
<a id="news_click" href="#news"> <span style="color:#B2B2B2" class="radius secondary label">Do you want fresh news and feeds?</span></a>

<div class="large-5 columns">
    <div class="row collapse">
        <div class="small-12 columns">
            <form id="email_form" data-validate="parsley" data-trigger="focusin focusout">
                </br>
                <input id="email" type="text" placeholder="Email" class="hg" name="email" data-notblank="true" data-type="email">
            </form>
        </div>
    </div>
</div>

<div class="bottom_blue" id="news"></div>

$('#news_click').click(function () {
    $('form#email_form input#email.hg').focus();
});

只有当我删除&lt;div class="bottom_blue" id="news"&gt;&lt;/div 时,焦点事件才有效。这不是一个选项,因为这是一个锚链接。

有什么想法吗?可能问题是js是在anchor之前执行的。

编辑:显然这适用于 chrome,而不是 FF。

demo

【问题讨论】:

  • 旁注,这个$('form#email_form input#email.hg') 应该是$('#email')。你的小提琴对我有用。
  • @j08691 不在 Firefox 中
  • 是的,刚刚看到。答案贴在下面。

标签: jquery html firefox


【解决方案1】:

本质上,您需要考虑点击事件并将焦点作为 Firefox 中的竞争条件。使用任一:

$('#news_click').click(function (e) {
    e.preventDefault();
    $('#email').focus();
});

$('#news_click').click(function (e) {
    setTimeout(function(){$('#email').focus();},10);
});

jsFiddle example

【讨论】:

    【解决方案2】:

    你忘记了&lt;div class="bottom_blue" id="news"&gt;&lt;/div末尾的尖括号...

    Demo here

    改用这个:

    <div class="bottom_blue" id="news"></div>
    

    另外,请尝试更改此设置:

    $('form#email_form input#email.hg').focus();
    

    到这里:

    $('#email').focus();
    

    无论如何,只有一个元素具有相同的id,所以你的具体程度没有区别。

    编辑: Firefox 似乎在 email 框被聚焦后访问了 href... 您可以使用 preventDefault() 作为 j08691 的答案,或者采用 href 属性关闭链接(参见updated fiddle)。

    【讨论】:

    • 刚刚添加了demo,希望大家不要介意! +1 但我认为真正的问题必须在其他地方:)
    猜你喜欢
    • 2014-05-13
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多