2011年10月29日 星期六

jQuery validate 套件:觸發驗證的事件

jQuery validate 預設的事件很奇妙
使用者按過一次 submit 觸發驗證以後,再回去改欄位內容
欄位內容就會每次 onChange 的時候都會觸發驗證
但因為有時候驗證是要送 AJAX 去給伺服器檢查
我們就不會很希望使用者每按一個鍵都會送一次 request
這樣當使用者一多的時候,或者是有人開機器人在亂按時
伺服器有可能會被這些訊息塞爆掉....

jQuery validate 套件的多國語言:更換 message 內容

在我們的專案中,由於語言資料已經寫在特定的檔案內
因此似乎不適用 jQuery validate 套件內建的 localization 方法
(我查到的資料好像都是說要把 message 寫在指定的 message.js 裡?)

要讓 error message 跟著使用者選取的語言更換,容易想到的可能作法有三種:
1、更換語言時讓整個網頁重新整理。
2、更換語言時把 validate 套件的 message dictionary 內容置換掉。
3、重新初始化 validate 套件。

其中 1 被主管打槍,主管要求我們不准重新整理網頁
2 找不到方法...(其中 disctionary 這個概念是搜尋時看到有人這麼說的,實際上我原本一直以為 validate 套件是需要時即時去讀字串的)
3 就是本篇的重點了~雖然是個笨一點的方法,但總是能夠做到效果....

2011年10月26日 星期三

Runtime.exec 容易發生的問題

最基本大概就是執行 Runtime.exec 實際上回傳的是 Process 物件
要用 InputStream 之類的物件接下來再轉成 String 才能顯示。
其他可能的問題可以參考下面的連結!

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

2011年10月25日 星期二

JSP:檔案下載

先記一下相關網址:

 

其中第二個連結有提到設定 content length,也許可以解決 UrlConnection.getContentLength = -1 的問題?

2011年10月19日 星期三

Java 的多國語言:在 ResourceBundle 中使用絕對路徑

原本 ResourceBundle 是依照 package name 來做相對路徑的
不過在我們的專案中,因為 NAND 容量不夠,必須把資源檔放在別的地方
所以只能以絕對路徑去指定它的位置。

2011年10月3日 星期一

jQuery 表單驗證的常見錯誤

這是我自己在放 validate 時沒效果,花了很多時間 debug 以後發現的幾種蠢原因...

1、$(" ").validate 必須放在 $(function(){ .... }); 內,例如:

$(function(){
 $(" ").validate( .... );
}

放在 $(function() { }); 之外的話會因為沒有被初始化,所以不會真的生效,按下 submit 按鈕就會變成沒有指定 method 和 target 的 submit 了。

2、頁面要引用 jquery.validate.js。有時候讀不到語言檔好像也可能是因為忘了引用函式庫的關係。

3、輸入的欄位們跟 submit 按鈕必須夾在 <form> .... </form> 之間。這其實我不是非常確定,但之前測試時 submit 放在 </form> 之後就沒辦法觸發 $("form").submit() 了,所以自然也不會跳進驗證。

4、變數名稱記得改.................因為驗證的程式碼常常是複製貼上的!XD

5、validate 套件看的是 name 屬性,所以需要被驗證的欄位一定都要有 name 屬性。

6、validate 觸發方法是表單被送出 (submit) 的時候觸發,所以如果 submit 按鈕是由 JavaScript 觸發,要記得加上 form 的 submit 事件 (例如 $("#form_name").submit(); )。

附帶基本使用教學:jQuery教學-jQuery.validate萬用表單驗證元件直接套用