如何在使用fancybox打开的新页面中将焦点设置在文本框上

Posted

技术标签:

【中文标题】如何在使用fancybox打开的新页面中将焦点设置在文本框上【英文标题】:How to set focus on a textbox in a new page, opened using fancybox 【发布时间】:2014-01-23 12:20:24 【问题描述】:

我有 2 页,page1 和 page2。点击page1中的链接后,page2将加载到fancybox中。我想在页面2加载后将焦点设置到页面2上的特定文本框。我可以知道怎么做吗?

这是我使用但不起作用的代码

$('.fancyboxTopic').fancybox(
   helpers:overlay: closeClick:false,
   'padding': 5,
   'width': '840px',
   'height': '95%',
   'autoScale': false,
   'autoHeight': false,
   'autoSize': false,
   'afterClose': function()window.location.reload(true);,
   'onComplete': function()$('#topicTitle').focus();
)

在我的链接中:

<a href="page2.asp" class="fancyboxTopic fancybox.iframe">page 2</a>

【问题讨论】:

【参考方案1】:

试试

afterShow: function()
    $('.fancybox-iframe').contents().find("#topicTitle").focus();

...假设所有页面都在同一个域中。

注意:您可能需要添加 tabindex 属性才能使其与 Chrome 一起使用:

afterShow: function()
    $('.fancybox-iframe').contents().find("#topicTitle").attr("tabindex",1).focus();

顺便说一句,onComplete 是 fancybox v1.3.x 的一个选项,与 v2.x 不兼容

【讨论】:

非常感谢@JFK,但这没有用。实际上,我尝试将 $('.fancybox-iframe').contents().find("#topicTitle").attr("tabindex",1).focus() 替换为 alert('test');甚至警报都不起作用。 顺便说一句,我使用的是fancybox v2.1.4 @lordrebs 如果警报不起作用,我认为您可能在某处遇到 js 错误 你是救生员!感谢您的大力帮助。现在效果很好。

以上是关于如何在使用fancybox打开的新页面中将焦点设置在文本框上的主要内容,如果未能解决你的问题,请参考以下文章

用jquery设置fancybox高度

如何在 TabCtrl 内的子对话框中将焦点设置为 CEdit?

您如何在 fancybox V2 中为 iframe 设置不同的高度/宽度?

为啥我的fancybox 没有在$('.selector').click() 上打开?

如何在颤动中将焦点转移到另一个文本表单字段

如何设置网页的默认输入焦点?