2009-05-13 1 views
0

Я использую плагин jQuery nyroModal в ASP.Net. Я люблю nyroModal, и в целом его работа очень красива.jQuery nyromodal + ASP.Net + UpdatePanel/AJAX - endShowContent не работает, мерцает, теряет фокус

Но я использую обратный вызов endShowContent для установки фокуса на первый элемент ввода текста на содержимое страницы после завершения загрузки nyromodal. Для этого у меня есть следующий код на странице, который инициирует nyromodal popup.

$ (функция() {$ .fn.nyroModal.settings.endShowContent = функция (ELT, параметры) {$ ('ввода: текст: первый', elt.content) .focus();}; });

Я могу сказать, что он работает, потому что первое текстовое поле мгновенно становится фокусом при появлении модальности. Но тогда это мерцает и снова теряет фокус. Это почти так, как будто ниромодаль решает, что он еще не полностью загружен, и что-то еще происходит, чтобы отвлечь внимание. Или, возможно, вмешательство UpdatePanel? (Я не знаю, почему это было бы). Возможно ли, что раздутые автогенераторы AJAX JS UpdatePanel совершают что-то после вызова nyromodal's endShowContent?

Любая помощь или понимание оценены.

ответ

2

Я попытался воссоздать эту проблему здесь: http://jsbin.com/igibo

Я не могу дублировать эту проблему, так что я предполагаю, что есть еще что-то в вашем коде, который вызывает проблему.

Попробуйте отредактировать рекреацию через http://jsbin.com/igibo/edit, чтобы дублировать проблему, после чего мы сможем ее решить.

P.S. Хотя это здорово, что вы уточняете свою проблему, обновите вопрос, а не добавляйте больше информации в новые ответы. (Они технически не отвечают)

0

Вы пробовали оборачивать код в

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

JQuery Document Ready Tutorial

Это возможно дом еще не полностью загружен.

+0

Thanks KClough! У меня также есть этот код на модальной всплывающей странице. Поэтому, когда он появляется, он все равно должен попытаться запустить этот document.ready код, когда все/DOM готов. НО, он все еще просто мерцает, но затем снова теряет фокус! :( Что выглядит очень странно для меня, потому что document.ready действительно должны иметь последнее слово, я бы подумал. У меня нет какой-либо другой необычный/странный JavaScript на моей странице либо. я мог бы сделать быстро протестируйте и удалите UpdatePanel и оставьте его как страницу, отличную от AJAX, и посмотрите только для целей тестирования, если это заставляет проблему уйти. Однако мне нужна UpdatePanel. – Aaron

0

Thanks brianpeiris! Вы не поверите в это, я чувствую себя больным.

Я получил ваш код из этого jsbin и скопировал его локально, поэтому у меня был пример кода рядом с моими собственными тестовыми страницами. В моих тестовых страницах я использовал некоторые старый способ запуска nyromodal, который был:

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

Я нашел этот код всей сети в примерах и так далее. Но, похоже, это должен быть какой-то старый/изворотливый/завершенный способ запуска всплывающего окна с нейромодальным!

Я просто сделал, что нормальной/чистую гиперссылка и удалить класс и целевой мусор, а затем использовал тот же стиль, который вы мне прислали:

$('a').nyroModal(); 

Теперь все мои проблемы исчезли. Это все зафиксировало! :) Также анимация открытия окна намного более гладкая.

Большое спасибо. Я нашел документацию немного непоследовательной для этого плагина.Вы помогли указать мне в правильном направлении. Используя этот способ, фокус работает отлично и очень гладко.

Cheers