我們在製作版面時對方可能會要求我們的input password會先在欄位內給個輸入的引導文字
,如此讓user能夠知道要針對這個input輸入啥東西,通常這是旁邊沒有說明文字時。
如下圖:
您可以看到,我們自訂了兩個function,當focus進帶有文字的元件時會呼叫replaceT,此時
在remove掉原本的text元件時,先將所有的屬性set進新的元件內,之後再remove掉;同理
當blur時,會呼叫restoreT,以此類推。
當初在找尋change type的部分時,意外看到國外的論壇有討論此事,就此分享給大家這個作
法,但我想應該很少網站的輸入機制會這麼囉唆吧囧,當初看到要這麼做有點傻眼orz...
,如此讓user能夠知道要針對這個input輸入啥東西,通常這是旁邊沒有說明文字時。
如下圖:
此時,當您focus進Enter Password欄位內時,就必須改變其type屬性,但是type屬性是不允許
更改的(會報error),因此可能需要remove掉這個DOM元件,而且還必須在remove掉時,將原
本元件的id , class等value setAttribute進新的元件內,請見下面的JavaScript code
function replaceT(obj){
if (obj.value == 'Enter Password') {
obj.value = '';
}
var newO=document.createElement('input');
newO.setAttribute('type','password');
newO.setAttribute('onblur',"restoreT(this)");
newO.setAttribute('style',"color:#000000");
newO.setAttribute('id',obj.getAttribute('id'));
newO.setAttribute('class',obj.getAttribute('class'));
obj.parentNode.replaceChild(newO,obj);
newO.focus();
}
function restoreT(obj){
if (obj.value == '') {
var newO=document.createElement('input');
newO.value = 'Enter Password';
newO.setAttribute('type','text');
newO.setAttribute('onfocus',"replaceT(this)");
newO.setAttribute('style',"color:#c9c8c8");
newO.setAttribute('id',obj.getAttribute('id'));
newO.setAttribute('class',obj.getAttribute('class'));
obj.parentNode.replaceChild(newO,obj);
newO.blur();
}
}
您可以看到,我們自訂了兩個function,當focus進帶有文字的元件時會呼叫replaceT,此時
在remove掉原本的text元件時,先將所有的屬性set進新的元件內,之後再remove掉;同理
當blur時,會呼叫restoreT,以此類推。
當初在找尋change type的部分時,意外看到國外的論壇有討論此事,就此分享給大家這個作
法,但我想應該很少網站的輸入機制會這麼囉唆吧囧,當初看到要這麼做有點傻眼orz...
留言
張貼留言