Собственно хочу организовать поддержку placeholderа на IE9 и ранее.
Имеется следующие функции:
function gt(obj) {
var res = [],
temp = null;
for(var i = 1; i < arguments.length; i++) {
temp = obj.getElementsByTagName(arguments[i]);
for(var j = 0; j < temp.length; j++)
res.push(temp[j]);
}
return res;
}
function placeholder() {
if(!("placeholder" in document.createElement("INPUT"))) {
var inputs = gt(document, "INPUT", "TEXTAREA");
for(var i = 0; i < inputs.length; i++)
if(inputs[i].getAttribute("placeholder")) {
var pholder = inputs[i].getAttribute("placeholder");
if(inputs[i].nodeName == "INPUT") {
inputs[i].value = pholder;
inputs[i].onfocus = function(){this.value = "";};
inputs[i].onblur = function(){this.value = pholder;};
}
else if(inputs[i].nodeName == "TEXTAREA") {
if(inputs[i].childNodes[0]) inputs[i].childNodes[0].nodeValue = pholder;
else inputs[i].appendChild(document.createTextNode(pholder));
inputs[i].onfocus = function(){this.childNodes[0].nodeValue = "";};
inputs[i].onblur = function(){this.childNodes[0].nodeValue = pholder;};
}
}
}
}
Проблема в том, что всем инпут- и текстареа- элементам в DOM на событие onblur он привязывает placeholder одного из этих элементов. В результате, при снятии фокуса с любого из полей полей парсится одно и того же значение. Ошибка где-то в логике, а понять не могу.