按钮单击不会触发

时间:2012-06-14 18:21:06

标签: javascript asp.net

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" />
        <div id="div1">Click here</div>
    </div>
    </form>

    <script type="text/javascript">
        var $ = function(e) { return document.getElementById(e); };
        var pageDefault = {
            btn1: $('Button1'),

            testfx: function() {
                alert('test');
            },

            init: function() {
                this.btn1.onclick = function() {
                    this.testfx();
                    return false;
                }
            }
        }
        pageDefault.init();
    </script>
</body>

为什么button1不会点击事件?

4 个答案:

答案 0 :(得分:4)

您可能需要使用$('<%= Button1.ClientID %>')代替$('Button1')。 有关详细信息,请参阅this文章。

在其他答案中提到的另一个问题是,事件处理程序引用的thiswindow。要解决此问题,您可以按以下方式重写处理程序:

this.btn1.onclick = function() {
    pageDefault.testfx();
    return false;
}

答案 1 :(得分:1)

this与该部分代码的范围不同。

试试这个

init: function() {
that = this // create's a that variable which refers to the current scope
this.btn1.onclick = function() {
    that.testfx(); // this now points to the scope of pageDefault
    // Same as doing pageDefault.testfx();
    return false;
}

Demo

答案 2 :(得分:0)

因为this中的this.testfx();不是pageDefault.testfx() Button1.testfx()

应该是

this.btn1.onclick = function() {
    pageDefault.testfx();
    return false;
}

答案 3 :(得分:0)

我认为因为btn1是一个jquery对象。所以使用这个instade:

init: function() {
                this.btn1.click(function() {
                    this.testfx();
                    return false;
                });
            }