Показать сообщение отдельно
  #1 (permalink)  
Старый 17.09.2014, 21:57
Интересующийся
Отправить личное сообщение для mixtape Посмотреть профиль Найти все сообщения от mixtape
 
Регистрация: 19.06.2014
Сообщений: 13

placeholder под IE
Собственно хочу организовать поддержку 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 одного из этих элементов. В результате, при снятии фокуса с любого из полей полей парсится одно и того же значение. Ошибка где-то в логике, а понять не могу.
Ответить с цитированием