ASP.NET中OnClientClick与OnClick的区别

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" />
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值