Home  >  Article  >  Web Front-end  >  js imitates html5 placeholder to adapt to unsupported browsers_javascript skills

js imitates html5 placeholder to adapt to unsupported browsers_javascript skills

WBOY
WBOYOriginal
2016-05-16 17:43:54962browse

HTML5 natively supports placeholder. For browsers that do not support it (ie), js simulation can be used.
js code

Copy code The code is as follows:

( function(){
//Determine whether placeholder is supported
function isPlaceholer(){
var input = document.createElement('input');
return "placeholder" in input;
}
//Unsupported code
if(!isPlaceholer()){
//Create a class
function Placeholder(obj){
this.input = obj;
this .label = document.createElement('label');
this.label.innerHTML = obj.getAttribute('placeholder');
this.label.style.cssText = 'position:absolute; text-indent: 4px;color:#999999; font-size:12px;';
if(obj.value != ''){
this.label.style.display = 'none';
}
this.init();
}
Placeholder.prototype = {
//Get the position
getxy: function(obj){
var left, top;
if(document .documentElement.getBoundingClientRect){
var html = document.documentElement,
body = document.body,
pos = obj.getBoundingClientRect(),
st = html.scrollTop || body.scrollTop,
sl = html.scrollLeft || body.scrollLeft,
ct = html.clientTop || body.clientTop,
cl = html.clientLeft || body.clientLeft;
left = pos.left sl - cl;
top = pos.top st - ct;
}
else{
while(obj){
left = obj.offsetLeft;
top = obj.offsetTop ;
obj = obj.offsetParent;
}
}
return{
left: left,
top : top
}
},
// Get width and height
getwh : function(obj){
return {
w : obj.offsetWidth,
h : obj.offsetHeight
}
},
//Add Width and height value method
setStyles: function(obj,styles){
for(var p in styles){
obj.style[p] = styles[p] 'px';
}
},
init : function(){
var label = this.label,
input = this.input,
xy = this.getxy(input),
wh = this .getwh(input);
this.setStyles(label, {'width':wh.w, 'height':wh.h, 'lineHeight':20, 'left':xy.left, 'top': xy.top});
document.body.appendChild(label);
label.onclick = function(){
this.style.display = "none";
input.focus() ;
}
input.onfocus = function(){
label.style.display = "none";
};
input.onblur = function(){
if( this.value == ""){
label.style.display = "block";
}
};
}
}
var inpColl = document.getElementsByTagName(' input'),
textColl = document.getElementsByTagName('textarea');
//HTML collection is converted into an array
function toArray(coll){
for(var i = 0, a = [ ], len = coll.length; i < len; i ){
a[i] = coll[i];
}
return a;
}
var inpArr = toArray (inpColl),
textArr = toArray(textColl),
placeholderArr = inpArr.concat(textArr);
for (var i = 0; i < placeholderArr.length; i ){
if (placeholderArr[i].getAttribute('placeholder')){
new Placeholder(placeholderArr[i]);
}
}
}
})()

html code:
Copy code The code is as follows:




< ;br>




css code:
Copy code The code is as follows:

div,input,textarea{ margin:0 ; padding:0;}
div{width:400px; margin:100px auto 0;}
input,textarea{width:200px;height:20px; margin-top:5px;line-height:20px;border :1px #666666 solid; background-color:#fff; padding-left:2px;}
textarea{ height:60px; font-size:12px; resize:none;}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn