onclientclick事件使用JS頁面會刷新問題解決


昨晚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.. ^^


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM