1

ポップアップ ウィンドウ (クリック時) をトリガーする div を持つ asp.net アプリケーションがあります。コード ビハインド コードで何かが発生した場合は、ウィンドウをポップアップする必要があります。

div をクリックする JavaScript コード ブロックを自分のページに送信できると考えましたが、うまく動作しないようです。popup プラグインの jQuery は次のとおりです。

$(function () {
   $('.c_popup').modalPopLite(
                { openButton: '#div_trigger', 
                  closeButton: '#close-btn' 
                });
});

単純な div がそれをトリガーします (div をクリックすることにより):

<div id="div_trigger">Trigger</div>

ページ上のボタンを使用して、javascript から div をクリックできます。

<input type="button" id="btn_show_error" value="Popup"
       onclick="document.getElementById('div_trigger').click();" />

それはうまくいきます。しかし、次のように、コードビハインドから正確にその JavaScript ブロックをページに送信しようとすると、次のようになります。

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
       "<script>document.getElementById('div_trigger').click();</script>")

何も起こりません。シンプルなアラート ボックスに変更して、コード ビハインドをテストしました。

ClientScript.RegisterStartupScript(Page.GetType(), "error_click",
     "<script>alert('Hello World');</script>")

そして、それはうまくいきます。したがって、JavaScript がコード ビハインドからページに到達していることがわかります。同じ JavaScript ブロックは、ページ自体のボタンから来たときに必要なことを行いますが、コード ビハインドからは機能しません。

どんなアイデアでも大歓迎です。私は本当に立ち往生しています。

編集: 2 人のポスターが、ポップアップ コントロールがバインドされる前に JavaScript を投稿していると回答しました。私が与えられた助けを借りても、この問題を解決する方法がわかりません。ページヘッダーブロックでこの関数を作成しようとしました:

function TriggerDiv() {
    $(document).ready(function () {
        alert('success');     //alert just to check if the function is firing
        document.getElementById('div_trigger').click();
    });
}

そして、私のコードビハインドから次のように呼び出しました:

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
    "<script>TriggerDiv();</script>")

アラートは発生しますが、クリック イベントは発生しません。まだ正しい順序で作業を行っていないと考えています。それ以上の助けをいただければ幸いです。

4

3 に答える 3

2

要素は、javascript の実行時に存在しない可能性があります。または、少なくとも への呼び出しmodalPopLiteがまだ実行されていません。コードを でラップします$(document).ready

編集:これが実行される時点で要素が存在する必要があります。 RegisterStartupScriptの下部にスクリプトを追加しますbody。ただし、modalPopLite呼び出しはまだ実行されていないため、クリック ハンドラはまだアタッチされていません。 $(document).readyまだこの問題を解決する必要があります。

于 2013-09-19T20:10:21.400 に答える
1
<script>
    function SayHi()
{
   alert('hi');
}
</script>

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "TestFunction", "SayHi();", true);
于 2013-09-19T20:22:47.777 に答える
1

起動スクリプトはページのフォームの最後に配置されるためready、ドキュメント全体が読み込まれたときにイベントが発生する前に実行されます。クリックは問題なくトリガーされます。クリックを気にするハンドラーがまだないだけです。

ポップアップ プラグインのスクリプトがフォームの末尾の前にある限り (たとえば、一般的に推奨されるように、頭の中)、別のreadyイベント ハンドラーをバインドすることができ、ポップアップがバインドされた後にトリガーされます。

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
   "<script>$(function(){ document.getElementById('div_trigger').click(); });</script>");

jQuery を使用してバインドされたイベントをトリガーするには、イベントをトリガーする jQuery の方法を使用する必要がある場合があります。

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
   "<script>$(function(){ $('#div_trigger').click(); });</script>");
于 2013-09-19T20:17:58.050 に答える