JS在onclientclick裡如何控制onclick的執行_javascript技巧

來源:互聯網
上載者:User

OnClientClick是用戶端指令碼,一般使用JavaScript,在用戶端,也就是IE中運行,點擊後馬上執行

OnClick是伺服器端事件處理函數,使用C#或者vb.net,在伺服器端,也就是IIS中運行,點擊按鈕後,執行postback,之後再運行。

若想先調用了OnClientClick後就不在調用OnClick事件,應在OnClientClick事件裡返回false.若不返回false,在執行了OnClientClick後,會繼續調用OnClick事件!

實現方法如下:

<asp:Button ID="btn_Save" runat="server" Text="儲存" CssClass="button_bak" OnClientClick="return whetherEmpty();" OnClick="btn_Save_Click" />//JavaScript實現如下:<script language="javascript" type="text/javascript">function whetherEmpty(){//alert("KPI資訊不能全為空白!");emptflag = false ;var kpiName = document.getElementById("<%=txt_KPIName.ClientID%>").value;var jobgoal = document.getElementById("<%=txt_JobGoal.ClientID%>").value;var weight = document.getElementById("<%=txt_Weight.ClientID%>").value;var standard = document.getElementById("<%=txt_Standard.ClientID%>").value;if (kpiName == "" && jobgoal == "" && weight =="" && standard ==""){emptflag = true ;}if (emptflag){alert("KPI資訊不能全為空白!");return false;}}</script>

若是OnClientClick="return whetherEmpty();" 沒有return ,在JavaScript裡即使return fales,onclick依然會執行!

下面給大家介紹onclientclick和onclick區別

其實有的時候需要用戶端和服務端雙重校正,為什麼這麼說呢? 比果說,一個使用者名稱的文字框,在用戶端我們通過JS校正,只能輸入字母和數字,不能有特殊字元!通常情況下是沒有問題的,但是總有那麼一丟丟人想方設法的去“搞破壞” ,這個時候就需要進行雙重校正了!說白了,就是服務端和用戶端都進麼校正!

比如說:Button有:OnClick事件和OnClientClick屬性,前者一般就是服務端的點擊事件!後者則是用戶端的點擊事件!

我們來做一個測試!在Default.aspx頁面中添加如下代碼!

<script language="javascript" type="text/javascript">function buttonClick() {alert("我是用戶端點擊事件");return false; }</script> 

頁面代碼:

<form id="form1" runat="server"><div><asp:Button ID="Button1" runat="server" Text="些Button是服務端控制項,預設使用OnClientClick事件,請禁用瀏覽器的Js功能體驗"OnClick="Button1_Click" OnClientClick="return buttonClick();" /><asp:Label ID="Label1" runat="server" Text=""></asp:Label></div></form> 

cs檔案代碼:

protected void Button1_Click(object sender, EventArgs e){this.Label1.Text = "我是服務端點擊事件";}

大家運行看看是什麼效果? 你可能會發現,只彈出了JS中的代碼! 沒錯,這正是我們想要的效果,通過return false 來"屏蔽"服務端的校正!好處是什嗎? 就是不用重新整理頁面呀!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.