HTML5 INPUT placeholder及兼容性處理_XHTML教程
由于placeholder是個新增屬性,目前只有少數瀏覽器支持,如何檢測瀏覽器是否支持它呢?(更多HTML5/CSS3特性檢測可以訪問)
function hasPlaceholderSupport() {
return 'placeholder' in document.createElement('input');
}
默認提示文字是灰色的,可以通過CSS來改變文字樣式:
/* all */ ::-webkit-input-placeholder { color:#f00; } input:-moz-placeholder { color:#f00; } /* individual: webkit */ #field2::-webkit-input-placeholder { color:#00f; } #field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; } #field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; } /* individual: mozilla */ #field2:-moz-placeholder { color:#00f; } #field3:-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; } #field4:-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
兼容其他不支持placeholder的瀏覽器:
var PlaceHolder = {
_support: (function() {
return 'placeholder' in document.createElement('input');
})(),
//提示文字的樣式,需要在頁面中其他位置定義
className: 'abc',
init: function() {
if (!PlaceHolder._support) {
//未對textarea處理,需要的自己加上
var inputs = document.getElementsByTagName('input');
PlaceHolder.create(inputs);
}
},
create: function(inputs) {
var input;
if (!inputs.length) {
inputs = [inputs];
}
for (var i = 0, length = inputs.length; i <length; i++) {
input = inputs[i];
if (!PlaceHolder._support && input.attributes && input.attributes.placeholder) {
PlaceHolder._setValue(input);
input.addEventListener('focus', function(e) {
if (this.value === this.attributes.placeholder.nodeValue) {
this.value = '';
this.className = '';
}
}, false);
input.addEventListener('blur', function(e) {
if (this.value === '') {
PlaceHolder._setValue(this);
}
}, false);
}
}
},
_setValue: function(input) {
input.value = input.attributes.placeholder.nodeValue;
input.className = PlaceHolder.className;
}
};
//頁面初始化時對所有input做初始化
//PlaceHolder.init();
//或者單獨設置某個元素
//PlaceHolder.create(document.getElementById('t1'));
- 相關鏈接:
- 教程說明:
XHTML教程-HTML5 INPUT placeholder及兼容性處理。