0

我在 ASP.Net 中使用 jQuery nyroModal 插件。我喜欢 nyroModal,总的来说它工作得很好。

但是我正在使用 endShowContent 回调将焦点设置到 nyromodal 完成加载后页面内容上的第一个文本输入元素。为了实现这一点,我在启动 nyromodal 弹出窗口的页面上有以下代码。

$(function() { $.fn.nyroModal.settings.endShowContent = function(elt, settings) { $('input:text:first', elt.content).focus(); }; });

我可以说出它的工作原理,因为当模式出现时,第一个文本字段确实会暂时获得焦点。但随后它会闪烁并再次失去焦点。就好像 nyromodal 决定它仍然没有完全加载,并且发生了其他事情将焦点移开。或者也许是 UpdatePanel 干扰?(我不知道为什么会这样)。在 nyromodal 的 endShowContent 调用发生之后,UpdatePanel 臃肿的自动生成的 AJAX JS 调用是否可能正在执行某些操作?

任何帮助或见解表示赞赏。

4

3 回答 3

2

我试图在这里重现问题:http: //jsbin.com/igibo

我无法复制这个问题,所以我猜你的代码中还有其他东西导致了这个问题。

尝试通过http://jsbin.com/igibo/edit编辑游戏以复制问题,然后我们可以从那里解决它。

PS 尽管您正在完善您的问题,但请更新问题,而不是在新答案中添加更多信息。(从技术上讲,它们不是答案)

于 2009-05-13T02:45:35.770 回答
0

谢谢布赖恩佩里斯!你不会相信的,我感到恶心。

我从那个 jsbin 获得了你的代码并将其复制到本地,所以我将你的示例代码与我自己的测试页面放在一起。在我的测试页面中,我使用了一些旧的方式来启动 nyromodal,它是:

<a href="modal.html" target="_blank" class="nyroModal">Launch modal</a>

我在网络上的示例等中找到了这段代码。但它似乎一定是用 nyromodal 启动模型弹出窗口的一些旧的/狡猾的/被取代的方式!

我只是创建了一个正常/干净的超链接并删除了类和目标垃圾,然后使用了您发送给我的相同样式:

$('a').nyroModal();

现在我所有的问题都没有了。这已经解决了一切!:) 窗口打开的动画也更加流畅。

非常感谢。我发现这个插件的文档有点不一致。你帮助我指出了正确的方向。使用这种方式,焦点也可以完美且非常流畅地工作。

干杯

于 2009-05-13T03:05:45.167 回答
0

您是否尝试过将代码包装在

$(document).ready(function() { // put all your jQuery goodness in here. });

JQuery 文档就绪教程

dom 可能还没有完全加载。

于 2009-05-13T01:29:08.500 回答