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