Javascript函数不能用于asp:button Click事件,其中测试警报功能正常工作。

时间:2012-11-05 14:48:18

标签: c# javascript jquery asp.net html

我正在尝试按照此网站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>

我放了两个按钮,一个是HTML按钮,另一个是asp:Button, 整个场景在我使用HTML按钮时工作正常,但是在asp的情况下页面没有显示类似的行为:按钮单击,我在JavaScript中放置了一个测试函数来测试asp:Button的OnClientClick事件和那个工作正常,但我不知道为什么这个警报没有被调用,我认为Noty JS存在一些问题。 请给予反馈

感谢。

2 个答案:

答案 0 :(得分:1)

正如jbabey在评论中所说:

  

默认情况下单击时,asp:按钮将导致回发。你需要从onclientclick return false,现在你返回undefined,因为generateAll没有返回。

由于您正在使用jQuery,我会更进一步,而不是直接设置click属性。相反,使用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>

答案 1 :(得分:0)

你可以将aspSubmitBehavior =“false”属性添加到asp:按钮。

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

我希望这能解决您的问题。请告诉我你是否帮助过。