0

このサイトhttp://needim.github.com/noty/で説明されているように、アラートを作成しようとして います。コードは次のとおりです。

    <head runat="server">
    <title>Test</title>
    <script src="jquery-1.7.2.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="js/noty/jquery.noty.js"></script>
    <script type="text/javascript" src="js/noty/layouts/top.js"></script>
    <link rel="stylesheet" type="text/css" href="buttons.css" />
    <script type="text/javascript" src="js/noty/themes/default.js"></script>
</head>
<body>
    <div class="container">
        <div id="customContainer">
        </div>
    </div>
    <script type="text/javascript">
        function generate(type, layout) {
            var n = noty({
                theme: 'defaultTheme',
                text: 'Do you want to continue?',
                buttons: [
    {
        addClass: 'btn btn-primary',
        text: 'Ok',
        onClick: function ($noty) {
            // this = button element
            // $noty = $noty element
            $noty.close();
            noty(
            {
                text: 'Record deleted !',
                type: 'success',
                callback:
                {
                    onShow: function () { },
                    afterShow: function () { TakeValue(true); },
                    onClose: function () {  },
                    afterClose: function () { }
                }
            });
        }
    },
     {
         addClass: 'btn btn-danger',
         text: 'Cancel',
         onClick: function ($noty) {
             $noty.close();
             noty(
            {
                text: 'Record not deleted !',
                type: 'warning',
                callback:
                 {
                     onShow: function () { },
                     afterShow: function () { TakeValue(false); },
                     onClose: function () { },
                     afterClose: function () { }
                 }
            });
         }
     }
    ]

            });

        }
     function TakeValue(result) {
            if (result == true) {
                document.getElementById("Hidden1").value = "true";
                alert(document.getElementById("Hidden1").value);

            } else {

                document.getElementById("Hidden1").value = "false";
                alert(document.getElementById("Hidden1").value);
            }
        }
        function generateAll() {
            generate('information', 'top');
        }

    </script>
    <form id="form" runat="server">
    <input id="Hidden1" type="hidden" value="false"/>
    <asp:Button ID="Button2" runat="server" Text="Press"  OnClientClick="return generateAll();" />
    <input id="Button1" type="button" value="button" onclick="return generateAll();" />
    </form>
</body>

2つのボタンを配置しました。1つはHTMLボタンで、もう1つはasp:Buttonです。シナリオ全体は、HTMLボタンを使用すると正常に機能しますが、asp:Buttonクリックの場合、ページに同様の動作が表示されません。 asp:ButtonのOnClientClickイベントをテストするためのテスト関数をJavaScriptに配置しましたが、これは正常に機能しましたが、このアラートが呼び出されない理由はわかりません。NotyJSに問題があると思います。フィードバックをお願いします

ありがとう。

4

2 に答える 2

1

jbabeyがコメントで言ったように:

asp:buttonは、デフォルトでクリックされたときにポストバックを引き起こします。return falseonclientclickから行う必要があります。現在、generateAllには戻り値がないため、undefinedを返しています。

clickjQueryを使用しているので、属性を直接設定するのではなく、さらに一歩進んでいきます。代わりに、jQueryを使用して設定してください。

<script>
$(document).ready(function() {
    $('#Button1').click(generateAll);
});
...
function generateAll(e) {
    generate('information', 'top');
    // This will prevent the default action of submitting the form.
    e.preventDefault();
}
</script>
于 2012-11-05T15:16:31.910 に答える
0

UseSubmitBehavior = "false"属性をasp:buttonに追加してください。

<asp:Button ID="Button2" runat="server" Text="Press" UseSubmitBehavior="false" OnClientClick="return generateAll();" />

これで問題が解決することを願っています。役に立ったかどうか教えてください。

于 2012-11-06T08:10:51.240 に答える