我在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调用是否可能正在执行某些操作?
感谢任何帮助或见解。
答案 0 :(得分:2)
我试图在这里重新创建问题:http://jsbin.com/igibo
我无法复制问题,所以我猜你的代码中还有其他东西导致了这个问题。
尝试通过http://jsbin.com/igibo/edit修改娱乐内容以复制问题,然后我们就可以从那里解决问题。
P.S。虽然您正在改善问题,但请更新问题,而不是在新答案中添加更多信息。 (他们在技术上不是答案)
答案 1 :(得分:0)
您是否尝试过将代码包装在
中 $(document).ready(function() {
// put all your jQuery goodness in here.
});
JQuery Document Ready Tutorial
dom可能尚未满载。
答案 2 :(得分:0)
谢谢brianpeiris!你不会相信这一点,我感到恶心。
我从jsbin那里得到你的代码并在本地复制它,所以我把你的示例代码与我自己的测试页面并排。在我的测试页面中,我使用了一种旧方法来启动一个nyromodal,它是:
<a href="modal.html" target="_blank" class="nyroModal">Launch modal</a>
我在示例等网络上发现了这个代码。但似乎必须采用一些旧的/狡猾的/取代的方式来启动带有nyromodal的模型弹出窗口!
我只是制作了一个普通/干净的超链接并删除了类和目标垃圾,然后使用了你发送给我的相同样式:
$('a').nyroModal();
现在我的所有问题都消失了。这已经解决了一切! :)此外,窗口打开的动画更加流畅。
非常感谢。我发现这个插件的文档有些不一致。你帮我指出了正确的方向。使用这种方式,焦点也能完美而平稳地工作。
干杯