5

ASP.NET コード ビハインドから jQuery 関数を呼び出そうとしています。

jQueryのクリックイベントによってトリガーされたくありません。jQuery関数をトリガーしたい--->コントロールのコードビハインドで「ダイアログを表示」。

$(document).ready(function () {
    $("#LinkButton1").click(function(){
        $("#hightlight_show1").toggle();
    });

    var dialog1 = $("#Add").dialog({
            autoOpen: false,
            width: 620,
            height: 400
    });

    // Move the dialog back into the <form> element 
    dialog1.parent().appendTo(jQuery("form:first"));

    $("#BT_add").click(function () {
       $("#Add").dialog("open");
       return false;
});

私はこのようなことを試しましたが、うまくいきませんでした:

$(document).ready(function () {
    $("#LinkButton1").click(function () {
        $("#hightlight_show1").toggle();
    });

    var dialog1 = $("#Add").dialog({
        autoOpen: false,
        width: 620,
        height: 400
    });

    // Move the dialog back into the <form> element 
    dialog1.parent().appendTo(jQuery("form:first"));

    function a() {
        $("#Add").dialog("open");
        return false;
    };

});

を使用して、コード ビハインドでこれを指定しますPage.ClientScript.RegisterStartupScript()

Page.ClientScript.RegisterStartupScript(
    this.GetType(),
    "a",
    "a();",
    true
 );
4

6 に答える 6

1

コード ビハインドから JavaScript 関数をトリガーすることはできません。HTML ページで JavaScript 関数を定義し、Control.Attributes.Add を使用してサーバー側でクリック イベントをバインドできます。イベントをバインドするにはサーバー コントロールが必要です。 put runat="server" で html コントロール サーバーにアクセスできるようにすることができます。

Javascript

function  YourFun(){
    $("#hightlight_show1").toggle();
}

コードビハインド

hightlight_show1.Attributes.Add("onclick", "YourFun();");
于 2013-07-19T14:10:14.817 に答える
0

これを行う

マークアップ

<script type="text/javascript">
    function ShowPopup(message) {
        $(function () {
            $("#dialog").html(message);
            $("#dialog").dialog({
                title: "jQuery Dialog Popup",
                buttons: {
                    Close: function () {
                        $(this).dialog('close');
                    }
                },
                modal: true
            });
        });
    };
</script>
<div id="dialog" style="display: none">
</div>
<asp:Button ID="btnShowPopup" runat="server" Text="Show Popup" OnClick="btnShowPopup_Click" />

コードビハインド

  protected void btnShowPopup_Click(object sender, EventArgs e)
{
    string message = "Message from server side";
    ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup('" + message + "');", true);
}

C# および VB で動作するデモをここからダウンロード

于 2013-07-19T14:25:49.877 に答える
0

これが実際に問題であるかどうかはわかりませんが、「試したコード」では、スクリプト タグ宣言の終了二重引用符 (") がありません。

あなたが書いた:type="text/javascript

しかし、宣言を閉じたことはありません...そうでなければ動作しているJSにとっては間違いなく混乱するでしょう。

于 2013-07-19T14:17:58.127 に答える
0

関数function a()内での宣言。document.ready

Register.StartupScript はコードを document.onload に追加します。どちらのイベントが発生しているか (ready または onload) を確認しますか?

document.ready の外で宣言すると、おそらく動作します。このようなもの:

<script type="text/javascript>

function a() {
    $("#Add").dialog("open");
    return false;
};

$(document).ready(function () {
     $("#LinkButton1").click(function(){
         $("#hightlight_show1").toggle();
     });

     // Move the dialog back into the <form> element 
     dialog1.parent().appendTo(jQuery("form:first"));

     var dialog1 = $("#Add").dialog({
         autoOpen: false,
         width: 620,
         height: 400
     });
});
于 2013-07-19T14:14:02.237 に答える
0

サーバー側 (c#) のアクションがクライアント側 (jQuery) のイベントに影響を与えるのは難しいようです。イベントを起動するサーバーから情報を要求するには、ajax を使用する必要があります。

c# / ASP コードは Web サーバー上で実行され、要求に応じてブラウザーに HTML を送信するだけの仕事であることを思い出してください。その後、その役割は実質的に完了します。JavaScript や jQuery などはブラウザによって解釈されますが、それはドキュメントがサーバーを離れてからしばらく後のことです。非常に大まかな意味で c# に jQuery イベントをトリガーさせる「方法」はありますが、最終的には、クライアント (ブラウザー) と Web サーバーの間の区分を認識する必要があります。

于 2013-07-19T14:09:56.893 に答える