电竞比分网-中国电竞赛事及体育赛事平台

分享

ASP.NET的OnClientClick與OnClick事件

 藍調(diào)書軒 2015-11-18

做網(wǎng)頁經(jīng)常要和JavaScript打交道,經(jīng)常要用JavaScript做一些客戶端的驗證,但是如果我們的按鈕用的是HTML控件的話,驗證通過后無法調(diào)用后臺代碼,如果用服務(wù)器端控件,驗證不通過有要刷新頁面,這個有時候挺煩人的,能不能讓服務(wù)器段的按鈕調(diào)用客戶端的驗證,如果驗證成功后在調(diào)用服務(wù)器端的方法,這樣既減少了網(wǎng)路傳輸,給用戶感覺也好。

OnClientClick是客戶端事件方法.一般采用JavaScript來進行處理.也就是直接在IE端運行.一點擊就運行.

OnClick事件是服務(wù)器端事件處理方法,在服務(wù)器端,也就是IIS中運行.點擊按鈕后,執(zhí)行postback,再運行.

如果一個按鈕上我們同時有客戶端的OnClientClick方法又有OnClick事件處理方法,如何才能按照正常的邏輯運行呢?

OnClientClick中我們常用來做一些客戶端的檢測.當(dāng)然放在服務(wù)器也可以做同樣的檢測,但這樣做的代價是與服務(wù)器進行交互,消耗資源。

例:

test()為一javascript函數(shù).

復(fù)制代碼
    <script type="text/javascript">
function test() {
var value = document.getElementById("<%=t1.ClientID%>").value;
if (value == "") {
alert("不能為空值");
return false;
}
}
</script>
復(fù)制代碼

t1為一文本框,判斷輸入內(nèi)容是否為空

<asp:TextBox ID="t1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="提交"  OnClientClick="return test()" onclick="Button1_Click"  />

需要注意的是當(dāng)我們當(dāng)擊這個按鈕時,自動先執(zhí)行的客戶端,再執(zhí)行服務(wù)器端的.如果客戶端返回的是false,那么服務(wù)器端對應(yīng)的方法永遠(yuǎn)不會執(zhí)行.這樣就達到檢測,只有通過才去執(zhí)行服務(wù)器端的方法.

也就是說如果我們上面寫成:

        <asp:Button ID="Button1" runat="server" Text="提交"  OnClientClick="test();return false" onclick="Button1_Click"  />

 

那么不管test()執(zhí)行的結(jié)果如何.服務(wù)器端對應(yīng)的Button1_Click方法都永遠(yuǎn)不會執(zhí)行.因為return false使得始終使客戶端返回false

如果我們寫成:

        <asp:Button ID="Button1" runat="server" Text="提交"  OnClientClick="test()" onclick="Button1_Click"  />

 

那么Button1_Click都有會發(fā)生.同樣也就達不到效果.也就是說你沒有通過檢測也去執(zhí)行服務(wù)器的方法了.

還可以通過Button1.Attributes.Add("onclick", "test()");的方法來觸發(fā)客戶端事件

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多