跳到主要內容

發表文章

目前顯示的是有「JavaScript」標籤的文章

jQuery click 無法在動態載入的控制項上運行

由於專案中會用到JQuery來動態載入控制項,原本的程式是在ASP.NET Create時就已經載入控制項的值,因此在JQuery註冊click事件的時候,其實是在已存在的控制項上註冊,因此可以成功Work,但在修改架構後,控制項的資料是來自於Web Service,因此控制項的載入在JQuery註冊click事件之後,所以會無法觸發。解決方法其實不難。

2013-JSDC.TW-閱讀心得

2013年的JSDC.tw在5/18、5/19兩天結束了,雖沒有親逢盛會,但講師們也不吝嗇的將簡報放在網路上共享,著實覺得揪甘心~~。稍稍瞄了一下善心人士提供的整理資料( JSDC.tw 2013 議程與投影片連結 ),發現有不少有趣議題,不過對於前端工程師的資安挑戰(講師:Ant)這個主題還滿感興趣的,所以花了點時間看了簡報包含 前傳 跟 後傳 ,簡單的分享一下心得。

在使用ASP.NET validation server controls的頁面中防止 Double Submit

上週五,同事在解一個網頁的問題,就是ASP.Net的頁面上,使用了validation server controls去驗證必填欄位,然後全部驗證成功後,為了要防止使用者因為連線過慢而導致連續按"送出"按鈕,進而產生兩張單的問題,當下有想到的解法就是使用JQuery在使用者按下"送出"的時候,把送出按鈕Disable。程式碼如下: 然而卻發現原來JQuery的$("form").submit是在"送出"按鈕被Click就觸發的,所以根本沒有驗證也一樣會讓Button給Disable,所以必須要確認是validation server controls全部驗證完成後,再執行"送出"按鈕被Disable動作,經過Survey發現你可以用JavaScript去檢查Page.IsValid這個值,不過條件是在Submit的按鈕上的CausesValidation屬性必須要設為True才會有動作,Submit如果設定將CausesValidation屬性設為True則validation server controls全部驗證成功,form才會post到Server上,否則如果有一或多個error,則將會進行以下的動作: 1. Submit取消。form不再post back到Server。 2. 任何無效的驗證將顯示出來。 3. 如果驗證是ShowSummary=true,並將收集所有的Error並且呈現。 4. 如果驗證是ShowMessageBox=true,將收集所有的Error並透過Message Box呈現。 因此透過這個特性,所以只要再加上判斷Page.IsValid是否為True,就可以知道是否所有的驗證控制項都驗證成功。 所以將程式改寫成如下: 就可以既完成驗證,又能夠防止使用者Double Submit。 感謝Yi-Ching提供協助測試,並丟了一個好問題,也感謝金龍一起腦力激盪,消耗不少腦細胞。 ^_^ Reference: 1. http://msdn.microsoft.com/en-us/library/system.web.ui.page.isvalid.aspx 2. http://msdn.mic...

搭配ASP.NET的AJAX使用JQuery

Abstract: 如果在使用了AJAX的ASP.NET網頁中 透過JQuery設定初始值 會發現當在Update Panel中執行Postback JQuery並不會被觸動 該怎麼辦呢? Method: 將需要在Update Panel中執行Postback的Script放入 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); function EndRequestHandler(sender, args) { //ScriptInHere } 如 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); function EndRequestHandler(sender, args) { alert(“Hello User”); } 就可以解決這個問題 Reference: 1. jquery datepicker ms ajax updatepanel doesn’t work after post back [ http://stackoverflow.com/questions/520645/jquery-datepicker-ms-ajax-updatepanel-doesnt-work-after-post-back ]