Recently in 社群 Category
My talks for OSDC.TW 2009, roughly introduced perl features / CPAN modules that I categorized them as “good” and “evil” ones. I should’ve mentioned that they are actually dependent to each other in code in the conclusion.
偶爾會需要做出這樣的效果:
- input 中有一段預設文字,提示其作用
- 使用者將輸入焦點放在 input 之後,預設文字清除
- 使用者若將自已輸入的文字全清除,並且將輸入焦點移離 input 時,則預設文字再度出現
原先很直覺的想到用全 javascript 做法。也就是利用 focus/blur 等事件,將 input 的 value 屬性值清除或設回預設值等等,像是 labels.js 這種做法。但這樣的做法有個缺點:預設文字可能會被送出。
雖然也可以在伺服器端檢查,但這麼做是提升了整件事的複雜度。如果哪天需要改預設文字,就要確定前、後端都能改。如果還要做多國語系,那請自求多福。
總之就是不能讓預設文字被送出。我用這種方法實做:
- input 的預設值一定要是空字串
- input 前面跟著一個 label, 其內容就是此 input 的預設文字
- input 的預設背景設成透明
- 當輸入焦點放在 input 時,背景設成白色。如果使用者有輸入任何文字,則使其白持白色。
- 如果沒有輸入任何文字,或被清空,當輸入焦點離開時,背景設回透明。
- label 弄成 display:block,並將其 margin-bottom 設為負值,使其與 input 重疊在一起。
簡單的說就是拿 label 來當 input 的「背景」。
實做測試如下:
如果原網站有背景圖或背景色的話,就麻煩一點,需要把 label 調成正好跟 input 完全一樣大,再在 label 加上背景白色。
這麼做的話,看到預設文字時,實際上 input 的 value 是空字串。送出時也是空字串。多國語系也不會有影響。甚至 label 內換成圖片都可以。
請見: 竹北 Perl 推廣組
目前仍在重新啟動的階段,原本是個 Wiki,但決定採用 Movable Type 架設成 Blog 網站的形式再啟動。
由於最近各英文的 Perl Blog 愈來愈多,整個 Perl 社群又重新在 Web 上活絡了起來,我們打算先放一些翻譯文章上去。原本我本人寫在自已部落格上的一些 Perl 技術文章也為全數轉移過去。
shelling++ 熱心地提供了優質的翻譯,感謝他的幫忙。
如果你想跟我一樣推廣 Perl,可以聯絡我 (email 是 gugod at gugod.org),或是在本篇部落格文章留言、也可以在這篇文章留言。歡迎大家。