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