Javascript阻止服务器控件执行服务器端代码的问题
通过Javascript在客户端执行一定的验证然后再决定是否执行服务器端代码。这是一个很常用的功能。
但是为此我花费了几个小时,才完全弄清楚。
一般来说Javascript函数返回False,却服务器控件不会继续执行服务器端代码。
一开始我这样写:
<script type="text/javascript">
function a() {
if (confirm("是否充许执行客户端代码?")) {
return true;
}
else {
return false;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<div>
<asp:Button ID="Button1" runat="server" Text="Button"
οnclick="Button1_Click" OnClientClick="a()"/>
</div>
</form>
</body>
无论怎样,服务器端代码还是照样执行。
后来我把上面红色的那部份换成了:
OnClientClick="return a()"
成功了。
这里的关键是Return这个关键字。没写它无论如何都不会成功。
在后台程序中这样写也是可以的:
this.Button1.Attributes.Add("onclick", "return a()");
通过Javascript在客户端执行一定的验证然后再决定是否执行服务器端代码。这是一个很常用的功能。
但是为此我花费了几个小时,才完全弄清楚。
一般来说Javascript函数返回False,却服务器控件不会继续执行服务器端代码。
一开始我这样写:
<script type="text/javascript">
function a() {
if (confirm("是否充许执行客户端代码?")) {
return true;
}
else {
return false;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<div>
<asp:Button ID="Button1" runat="server" Text="Button"
οnclick="Button1_Click" OnClientClick="a()"/>
</div>
</form>
</body>
无论怎样,服务器端代码还是照样执行。
后来我把上面红色的那部份换成了:
OnClientClick="return a()"
成功了。
这里的关键是Return这个关键字。没写它无论如何都不会成功。
在后台程序中这样写也是可以的:
this.Button1.Attributes.Add("onclick", "return a()");