导航

onclientclick事件使用JS页面会刷新问题解决

Posted on 2012-12-18 09:27  clare-zhang  阅读(3256)  评论(0编辑  收藏  举报

昨晚Demo Javascript的用法给老婆看的时候,很简单地试验了一段加法的程式,大概如下:

<script language="javascript" type="text/javascript">
        function sum()
        {
            var v1 = document.getElementById("TextBox1").value;
            var v2 = document.getElementById("TextBox2").value;
            document.getElementById("TextBox3").value = parseInt(v1) + parseInt(v2);
        }
</script>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>+

<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>=

<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
<asp:Button ID="Button2" runat="server" Text="calculate2" Width="200px" OnClientClick="sum();"  />

执行完了之后,页面却是一直刷新的,怎么想也想不通。

非常纳闷,好丢脸的哇,绷不住。。。

 

今天查找问题,才发现是服务器的Button控件里OnClientClick搞的鬼,如果想使用JS不刷新,必须在调用的时候加上Return才行,如下

<asp:Button ID="Button2" runat="server" Text="calculate2" Width="200px" OnClientClick="return sum();"  />

而且在JS的Function里面,必须Return False;如果是Return True;的话则会页面刷新,并继续执行OnClick事件(如果有的话)

所以正确的写法应该是如下的:

<script language="javascript" type="text/javascript">
        function sum()
        {
            var v1 = document.getElementById("TextBox1").value;
            var v2 = document.getElementById("TextBox2").value;
            document.getElementById("TextBox3").value = parseInt(v1) + parseInt(v2);
            return false;
        }
</script> 

<asp:Button ID="Button2" runat="server" Text="calculate2" Width="200px" OnClientClick="return sum();"  />
<input type="button" onclick="sum()" value="calculate" />  --type="submit"也是不行的
<input type="checkbox" onclick="sum()" />

说到底毕竟asp:Button是服务器控件,势必有它的特殊之处,如果不想麻烦直接使用input的HTML控件好了~~

PS:Many thanks for my GF & good luck with her on the way of interview.. ^^