2009-05-13 11 views
0

私はASP.Net内でjQuery nyroModalプラグインを使用しています。私はnyroModalを愛し、全体的にはうまく働いています。jQuery nyromodal + ASP.Net + UpdatePanel/AJAX - endShowContentが機能しない、点滅してフォーカスが失われる

しかし、私はendShowContentコールバックを使用して、nyromodalの読み込みが完了した後、ページのコンテンツの最初のテキスト入力要素にフォーカスを設定しています。これを達成するために、私はニオモダルポップアップを開始するページに次のコードを書いています。

$(関数(){ $ .fn.nyroModal.settings.endShowContent =関数(ELT、設定){$( '入力:テキスト:最初'、elt.content).focus();}; });

モーダルが表示されたときに、最初のテキストフィールドに一時的にフォーカスが掛かるため、その種類の作業をすることができます。しかし、それは一種のちらつきと再び焦点を失う。ニオモダルはそれがまだ完全にロードされていないと判断した場合とほぼ同じです。あるいは、おそらくUpdatePanelが干渉していますか? (私はなぜそれが起こるか分からない)。 UpdatePanelの膨大な自動生成AJAX JS呼び出しが、nyromodalのendShowContent呼び出しが発生した後に何かしている可能性はありますか?

何か助けや洞察力がありがとうございます。

答えて

2

私はここで問題を再現しようとしました:私は、問題を複製することはできませんhttp://jsbin.com/igibo

ので、私は、問題を引き起こしているあなたのコード内で何か他のものがあります推測しています。

http://jsbin.com/igibo/editでレクリエーションを編集して問題を再現してみると、そこから解決できます。

P.S.問題を解決することは素晴らしいことですが、新しい回答に情報を追加するのではなく、質問を更新してください。 (技術的には答えられません)

0

あなたはDOMがまだ完全にロードされていない可能です

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

JQuery Document Ready Tutorial

でコードをラップしようとしています。

+0

ありがとうKClough! このコードはモーダルポップアップページにもあります。ですから、ポップアップするときには、すべての/ DOMが準備完了しているときにこのdocument.readyコードを実行しようとしなければなりません。 しかし、それでもまだちらつきますが、再びフォーカスが失われます! :(document.readyは本当に私が思っていた最終決定権を持っている必要があるので、私には非常に奇妙なようだ 。 は、私はどちらか私のページ上の他の異常な/奇妙なJavaScriptを持っていません。 私が行う可能性がありますがクイックテストを行い、UpdatePanelを削除して、非AJAXページとして残しておき、問題が解消された場合はテスト目的のために参照するだけですが、私はUpdatePanelが必要です。 – Aaron

0

ありがとうbrianpeiris!あなたはこれを信じないでしょう、私は気分が悪いです。

jsbinからコードを取得してローカルにコピーしたので、サンプルコードを自分のテストページと並べて表示しました。私のテストページでは、私がいたnyromodalを起動するいくつかの古い方法を使用していました:

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

私は例のすべてのWeb上でこのコードを発見し、等々。しかし、それはnyromodalでモデルポップアップを起動するいくつかの古い/ dodgy/supercededの方法でなければならないようだ!

私は単に、あなたが私を送っ同じスタイルを使用、通常のクリーン/ハイパーリンクと判断し、クラスを削除し、ごみを対象:今、すべての私の問題のなくなっている

$('a').nyroModal(); 

を。これですべてが修正されました! :)また、窓のオープニングのアニメーションは、よりスムーズです。

ありがとうございます。私はこのプラグインのために少し矛盾したドキュメントを見つけました。あなたは私を正しい方向に向けるのを助けました。このようにして、フォーカスは完璧に、非常にスムーズに動作します。

乾杯