Re: [討論] placeholder js 版
※ 引述《kerash (K.T)》之銘言:
: 在 html5 可以使用 placeholder 讓輸入框有提示需輸入內容的功能
: 在這之前大多數的 placeholder 都是用 js 判斷預設內容
: 例如:
: 若 value 為 placeholder 的文字,就加入做為 placeholder 的 class
: 反之就把預設內容清除並且把 class 消除
: 由於這種狀況在遇到必填資料時,若判斷內容是否為空時會很麻煩
: 得再多一次判斷內容是否為預設文字之類的方法
: (雖然用 jQuery 去加入事件也很快啦QQ)
: 個人因為想當作學習也想製作自己的解決方案
: 所以參照了 hotmail 的登入方式,
: 用 div 蓋上去的方法來做假的 placeholder
: 並且想讓所有設定的東西一次套用上,
: 因此就嘗試自己初學寫一個 jQuery 的 plug-in
: 一方面當做紀錄,一方面想請大家指導一下我的 code 有哪些需要改進的部分
: 因為說實在話我的觀念都是網路拼拼湊湊,難免會錯誤
: 所以一邊學習一邊請教大家指導了 m(_ _)m
: 以下是網址
: http://kerash.net16.net/work/placeholder/v1_1/placeholder_v1_1.html
: (原本有 v1.0 版,純用 js 語法寫出來的,但是因為意外刪除CODE後就回不來了QQ..)
這樣跟 html5 的相容性會不會比較好一點?
若 value 為空,則塞入 placeholder
var has_placeholder=('placeholder' in _d.createElement('input'))?true:false;
if(!has_placeholder){
$('[placeholder]').blur(function(){
var $this=$(this);
var placeholder=$this.attr('placeholder');
var value=$this.val();
if(value==''){$this.val(placeholder);$this.addClass('placeholder');}
}).focus(function(){
var $this=$(this);
var placeholder=$this.attr('placeholder');
var value=$this.val();
if(value==placeholder){$this.val('');$this.removeClass('placeholder');}
}).blur();
$('form').submit(function(){
var req=0;
$(this).find('[placeholder]').each(function(){
var $this=$(this);
if($this.val()==$this.attr('placeholder')){$this.val('');}
if($this.attr('req') && $this.val()==''){req++;}
});
if(req>0){
$(this).find('[placeholder]').each(function(){
var $this=$(this);
if($this.val()==''){
$this.val($this.attr('placeholder'));
$this.addClass('placeholder');
}
});
return false;
}
});
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.181.51.65
推
04/27 14:50, , 1F
04/27 14:50, 1F
→
04/27 14:51, , 2F
04/27 14:51, 2F
→
04/27 14:51, , 3F
04/27 14:51, 3F
→
04/27 14:51, , 4F
04/27 14:51, 4F
→
04/27 14:52, , 5F
04/27 14:52, 5F
→
04/27 14:53, , 6F
04/27 14:53, 6F
→
04/27 16:32, , 7F
04/27 16:32, 7F
加上黃色那一段應該是可行的?
※ 編輯: dinos 來自: 211.76.43.193 (04/28 08:35)
推
04/28 10:48, , 8F
04/28 10:48, 8F
→
04/28 10:49, , 9F
04/28 10:49, 9F
→
04/28 18:00, , 10F
04/28 18:00, 10F