發表文章

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

[jQuery] [AS400 simulator] 單純抓取Ctrl鍵

圖片
眾所周知,AS400的畫面(終端畫面)很像PC上DOS的畫面 但是需要快速輸入大量資料的操作人員基本上絕對偏愛這種畫面, 因為雙手都不太需要離開鍵盤就可以把很多資料登打完。 由於系統不斷進步,現在幾乎都是WEB介面的設計, 但這些設計對於某些公司的操作人員都還是相當難用的(速度不夠快)。 因此我們就必須在WEB上實現可以快速輸入的 AS400 Simulator 這時候第一個遇到最大的問題是『右邊Ctrl鍵』,因為對 AS400終端來說, 這個『右邊Ctrl鍵』是『執行』,也就是Web表單上的 submit, 然而瀏覽器卻不支援『左/右』分別的 Ctrl鍵/Shift鍵/Alt鍵 雖然,透過jquery的 keyup 和 keydown 功能可以抓到 Ctrl 鍵,但卻有很奇妙的差別: keydown : 可以單獨抓到 Ctrl 鍵的 flag 和 keycode。 但又有可能發生在組合鍵(例如 Ctrl+A 、Ctrl+C等)發生前的按壓。 keyup: 當發生組合鍵(例如 Ctrl+A 、Ctrl+C等)時,Ctrl 鍵 的keyup事件就不會單獨出現。 因此,針對單獨按壓Ctrl鍵就必須透過這兩個事件交互去判斷使用者行為。 所以下面就是用jQuery來實現判斷 // JavaScript Document var downctrl=false; // 偵測ctrl $(document).keydown(function(e) { if(popdisplay){ // press any key close help pop window $("#popWindow").hide(); popdisplay=false; } if(e.ctrlKey && e.keyCode==17){ // catch Ctrl key and set flag downctrl=true; }else if(e.keyCode==117){ // F6 Key pop help window if(!popdisplay){ e.preventDefault(); $("#popWindow").show(); popdisplay=true; } }...

Coldfusion (Railo 3.3.4)使用 POI 元件 寫出 XLSX 檔案

圖片
補充前一篇  Coldfusion (Railo 3.3.4) 使用 POI 元件 讀取 xls/xlsx 修改記錄 我在 POIUtility.cfc 內加入一個 Function 用來處理寫出 XLSX 格式檔案 cfc 程式碼(增加): <!--- 自訂寫出 XLSX 的 EXCEL 檔案--->     < cffunction name= "WriteExcelX" access= "public" returntype= "void" output= "false"         hint= "Takes an array of 'Sheet' structure objects and writes each of them to a tab in the Excel file." >         <!--- Define arguments. --->         < cfargument             name= "FilePath"             type= "string"             required= "true"             hint= "This is the expanded path of the Excel file."             />         < cfargument             name= "Sheets"             ...

jQuery設定/變更select物件預設值的方法

寫網頁服務最討厭的一件事就是:各種瀏覽器的DOM生成方式不同,導致認為可以的反應卻沒預期發生... 就說 HTML 裡面的 select 這個物件吧 <select id="SelectID">   <option value="A" selected="selected">單位A</option>   <option value="B">單位B</option>   <option value="C">單位C</option> </select> 當我想要 設定 select 預設值時,可以用下面幾種方式: $('#SelectID')[0].selectedIndex = 1; //選取第二個欄位 單位B (索引從0開始) $('#SelectID').get(0).selectedIndex = 1; //效果同上 $('#SelectID').val(selectedValue); //selectedValue是變數,裡面是select option其中一個的value值 $('#SelectID').val('B') //選擇第二欄位,效果同上 $('#SelectID option').filter('[value="'+selectedValue+'"]').attr("selected",true); //filter選項後設定屬性 想要 取得 其選擇值時可以用: var dataValue = $('#SelectID').val();  //取得被選項目的value var dataValue = $('#SelectID').find('option:selected').val(); //效果同上,問題比較少 var dataText = $('#SelectID')...

jQuery ajax.responseText注意事項

jQuery操作ajax技巧是相當方便的, 但是操作ajax.responseText,不得不注意到同步問題,如下面的例子: var rtxt = $.ajax ({ type: "GET" ,                    url: "empl.cfm" ,                    data: { eno:"A001",                    dept: "A" } ,                    async: true}) .responseText; var msg = eval (rtext).message; alert (msag); 這個是以 jQuery 利用ajax非同步呼叫 empl.cfm 頁面取得人事資料,而該頁面會以 JSON 格式回傳,該格式結構裡面會包含 message 的變數。 這個看似正常的程式碼其實隱含著很大的問題, 測試過程中,當伺服器回應在200ms以內時這個畫面會顯示 msag 內容, 當大於 200ms 就容易出現無反應 ( alert沒有執行 )。 後來反覆檢查的結果,發現原來是 async 參數會作祟,當 async為 true 時,ajax 為非同步運作:請求頁面同時,script 繼續執行並不等待請求回應,由於 responseText 指令在執行時會需要瀏覽器即時編譯,當編譯完成執行時,若請求的頁面已經返回回應資料,則此時會正常的繼續執行,若請求頁面來不及在編譯執行前返回回應資料,則會造成 rtxt 變成 undefined 狀態,使得接下來的 eval(rtext) 也變成 undefined ,如此直接取得結構 .message 時就會導致 javas...

將SQL讀出的資料暫存到JavaScript的Array以方便利用

有時候網頁需要讀取列表資料的時候, 通常我會把 SQL 執行語法交由另外一個 Coldfusion page 去執行, 然後取得回傳的內容並且儲存起來。 (這個方式當然是使用 ajax 方式,才不會動不動就要重新 RUN 一次版面) 為什麼要這麼做? 因為多數的時候,這個列表內容可能非常多(1~2千筆), 因此,這個列表就需要動用到分頁顯示, 然而,若是以前的作法是,每次點擊不同的分頁,就必須重新呼叫 SQL 查詢, 並只過濾出我需要顯示的範圍,而這種方式的處理,資料庫讀取就變得相當頻繁,

jQuery.cookie 如何讀取 Coldfusion cfcookie 的設定值

圖片
我們都知道在Coldfusion下設定cookie只需要使用 cfcookie tag, 例如我們設定一個cookie名稱叫cid,它的值為123456,有效期為1天: <cfcookie name="cid" value="123456" expires="1"> 如果用coldfusion來讀取這個只需要下: <cfset idvar = cookie.cid> 或 #cookie.cid# 就可以簡單讀取。 但是某些情況下,若是用到了javascript來讀取這個值,就好像不是這麼一回事了,