jquery - 输入文本中的焦点或自动对焦在 Firefox 16.0.2 中不起作用

标签 jquery html firefox iframe fancybox

我想在页面加载/启动后专注于输入文本。这是我的表格:

<form method="post" action="tags">
    <input type="hidden" name="id" id="id" value="getId()" />
    <input type="text" name="tag" id="tag" autofocus="autofocus"/>
    <input type="submit" value="Add" name="add" />
</form>

我试过 jQuery,但它在 Firefox 上不起作用:

jQuery(document).ready(function(){
  jQuery("#tag").focus();
});

这是一个使用 Fancybox 作为 Iframe 打开的窗口。这是我的 Fancybox 函数:

jQuery(".fancybox").fancybox({
    type: "iframe",
    width: 640,
    height: 320,
    afterClose : function() {
        location.reload();
        return;
    },
    afterShow: function() {
        jQuery('.fancybox-iframe').find('#tag').focus();
    }
});

有解决办法吗?

谢谢!

最佳答案

试试这个。

 //change this selector:
$('yourselector').fancybox({
    onComplete: function() {
        $('#fancybox-frame').contents().find('#tag').focus();
    }
});

API reference

当您将内容加载到 iframe 时,jQuery 将无法使用标准的 $(selector) 找到其内容。 .contents().find()方法会。

#fancybox-frame 是 fancybox iframe 的默认 ID。 onComplete 回调在加载内容时触发。


经过一些测试,onComplete 处理程序似乎触发得太早了。使用超时是一个丑陋的解决方案,因此调整加载的页面应该是一个更好的选择:

<form method="post" action="tags">
    <input type="hidden" name="id" id="id" value="getId()" />
    <input type="text" name="tag" id="tag" />
    <input type="submit" value="Add" name="add" />
</form>
<script>
document.getElementById('tag').focus();
</script>

当它被加载到 iframe 中时,脚本将正常执行并按应有的方式聚焦输入元素。

关于jquery - 输入文本中的焦点或自动对焦在 Firefox 16.0.2 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13242381/

相关文章:

php - 如何在我的 WordPress 页脚中包含 Jquery?

javascript - 按日期检查jquery中是否是假期的功能

javascript - 使用 xml 中该元素的值定位一个元素及其下的其他元素

html - 删除 AnchorTag IE 边框

javascript - HTML <select> 焦点问题 : 2 clicks needed with Firefox to select an <option>

jquery - 动态改变导航栏的颜色

在新选项卡或窗口中打开时,Javascript 链接不起作用

html - 无法为选项卡内容设置边框顶部

javascript - fullcalendar javascript 问题 - 它没有在 IE 中显示事件?

javascript - AudioJS, jQuery 不允许加载本地资源