您的位置:首页 > 编程语言 > ASP

ASP.NET中OnClientClick与OnClick的区别

2017-03-27 18:14 453 查看
OnClientClick是客户端事件处理方法,一般采用JavaScript进行处理,可以直接在浏览器中运行,不跟后台发生交互。

OnClick是服务器端事件处理方法,在服务器端,也就是IIS中运行。执行顺序为:点击按钮->页面回传(PostBack)->执行Click事件绑定的方法

我们通常使用OnClientClick事件来做一些客户端的检测,当然也可以把检测放在服务器端执行,但这样做的代价是与服务器进行交互,消耗资源。

如果一个按钮既有OnClientClick事件处理方法又有OnClick事件处理方法,当我们单击这个按钮时,先触发客户端事件,再触发服务器端事件,如果客户端事件返回值为false,那么服务器端对应的方法永远不会执行。这样就达到检测的目的,只有检测通过才能执行服务器端的方法。

<script type="text/javascript">
function ValidateData(){
var isValid = true;
var email = $("#ForegroundValidate_Index_Email").val();
var phone = $("#ForegroundValidate_Index_Phone").val();
var count = $("#ForegroundValidate_Index_Count").val();
//验证邮箱:Razor视图中@@表示邮箱中的@符号
//请注意:这里的正则表达式的写法和判断方法跟c#不一样
//正则表达式格式:/正则表达式/g,g表示全部查找
var regEmail = /\w+@@\w+\.\w+/;
var regPhone = /[1-9]\d{10}/;

if (!regEmail.test(email)) {
alert("邮箱格式错误!");
isValid = false;
}

if (!regPhone.test(phone)) {
alert("手机号格式错误!");
isValid = false;
}

if (!(/^\d+$/g).test(count)) {
alert("数量格式错误!");
isValid = false;
}
return isValid;
}
</script>
<asp:Button ID="btnSubmit" class="btn" runat="server" OnClientClick="return ValidateData();" Text="提交" OnClick="btnSubmit_Click" />


OnClientClick事件一定要return,否则OnClick事件都会执行。

示例代码如下:

哪怕ValidateData()方法始终返回false,但是OnClientClick=”ValidateData();”,所以点击按钮后OnClick事件始终会被触发。

<script type="text/javascript">
function ValidateData() {
return false;
}
</script>
<asp:Button ID="btnSubmit" class="btn" runat="server" OnClientClick="ValidateData();" Text="提交" OnClick="btnSubmit_Click" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  asp.net javascript onclick