jQuery焦点函数在Firefox中不起作用

jQuery焦点函数在Firefox中不起作用,jquery,jquery-1.3,Jquery,Jquery 1.3,单击链接后,下面的代码将聚焦文本输入。它适用于Chrome2.x、IE8和Opera9.64,但不适用于Firefox3.0.9。文本输入在Firefox中快速闪烁,然后消失,我目前正在使用WindowsXPSP2 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> <script> $(doc

单击链接后,下面的代码将聚焦文本输入。它适用于Chrome2.x、IE8和Opera9.64,但不适用于Firefox3.0.9。文本输入在Firefox中快速闪烁,然后消失,我目前正在使用WindowsXPSP2

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
<script>
$(document).ready(function()
{
    $("a").click(function() {
        var field_id = $(this).attr("href");
        $(field_id).focus();
    });
});
</script>

<a href="#text_field">Focus</a>
<input type="text" name="text_field" id="text_field" />

有人知道如何在Firefox中处理上述问题吗?

我不知道这是不是你想要的。要将焦点放在输入上,请单击,您可以执行以下操作:

<label for="text_field">Label</label>
<input type="text" name="text_field" id="text_field" />


我不知道这是不是你想要的。要将焦点放在输入上,请单击,您可以执行以下操作:

<label for="text_field">Label</label>
<input type="text" name="text_field" id="text_field" />


除了其他两个答案外,您的方式不起作用的原因是href字段的值通常完全由url限定,这取决于浏览器,jQuery不会将其抽象掉

因此,如果您有一个href text_字段,您可能会发现该字段的实际值为,这就是它与您的模式不匹配的原因


Daniel关于标签和属性的建议是一个很好的解决方案,如果你想专注于字段。

除了其他两个答案之外,你的方法不起作用的原因是href字段的值通常完全由url限定,这取决于浏览器,jQuery不会将其抽象掉

因此,如果您有一个href text_字段,您可能会发现该字段的实际值为,这就是它与您的模式不匹配的原因


Daniel关于标签和属性的建议是一个很好的解决方案,如果您想关注字段。

我认为FF中会出现此错误,因为在您单击链接后,它会运行单击回调,然后打开pagetextfield。您可以尝试:

$(document).ready(function()
{
    $("div").click(function() {
        var field_id = $(this).attr("forInput");
        $(field_id).focus();
    });
});
</script>

<div forInput="#text_field">Focus</div>
<input type="text" name="text_field" id="text_field" />

这样就没有链接,也不会打开另一个页面。

我认为FF中会出现此错误,因为单击链接后,它会运行单击回调,然后打开pagetextfield。您可以尝试:

$(document).ready(function()
{
    $("div").click(function() {
        var field_id = $(this).attr("forInput");
        $(field_id).focus();
    });
});
</script>

<div forInput="#text_field">Focus</div>
<input type="text" name="text_field" id="text_field" />

这样就没有链接,也不会打开另一个页面。

这应该可以做到:

$(function ()
{
    $("a").click(function ()
    {
        $($(this).attr("href")).focus();

        return false; // remember to stop links default action
    });
});

在最新版本的Chrome、IE和FireFox中测试。

这应该可以做到:

$(function ()
{
    $("a").click(function ()
    {
        $($(this).attr("href")).focus();

        return false; // remember to stop links default action
    });
});

在最新版本的Chrome、IE和FireFox上测试。

正如Daniel所暗示的,问题在于链接上的文本字段。设置焦点后,Firefox希望跳转到文档中指定的位置。您只需从单击处理程序返回false

$(field_id).focus();
return false;

正如Daniel所暗示的,问题在于链接上的文本字段。设置焦点后,Firefox希望跳转到文档中指定的位置。您只需从单击处理程序返回false

$(field_id).focus();
return false;

您还可以更明确地在事件arg上调用preventDefault

$(document).ready(function()
{
    $("a").click(function(event) {
        var field_id = $(this).attr("href");
        $(field_id).focus()
        event.preventDefault();
    });

});

您还可以更明确地在事件arg上调用preventDefault

$(document).ready(function()
{
    $("a").click(function(event) {
        var field_id = $(this).attr("href");
        $(field_id).focus()
        event.preventDefault();
    });

});

+1用于提及。href包括http://stuff-此“功能”也吸引了我,请在.src上注意它。+1用于提及。href包括http://stuff-此“功能”也吸引了我,请在.src上注意它。很好,我完全忘记了链接因素,今天早上我遇到了类似的情况。很好,我完全忘记了链接因素,今天早上我遇到了类似的情况。这更简单,我不需要通过jQuery。这更简单,我不需要通过jQuery。