Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.01.2015, 13:47
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Все что я хочу - подключить некий magicPlaceholder.js и забыть об этом.
Далее работать как обычно - из js обращаться к input.value, менять input.placeholder (в принципе), в том числе и через атрибуты. Причем с динамически созданными инпутами все также должно работать.
В IE9 по крайней мере это все реализуемо. Уже почти сделал.
В IE8 возможно тоже, но будут некоторые ограничения.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #12 (permalink)  
Старый 16.01.2015, 16:28
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<meta charset="utf-8"> 
<style>
#canvas {
	border: solid black 1px;
	display: block;
}

</style>
<body>
<input type="text" placeholder="dasda">
<input type="text" placeholder="dasda" >
<input type="text" placeholder="dasda" >


<script>
[JS]
function addevent(obj, e, h) {if (obj.addEventListener) { obj.addEventListener(e, h, false);} else if (obj.attachEvent) { obj.attachEvent('on'+e, h);} else { obj['on'+e]=function() { h();};}} function delevent(obj, e, h) { if (obj.removeEventListener) { obj.removeEventListener(e, h, false);} else if (obj.detachEvent) { obj.detachEvent('on'+e, h);} else {obj['on'+e]=null;}}



var fn = function(){

var inp = document.querySelectorAll('input[type="text"');


for(var i = 0; i < inp.length; i++) {
	inp[i].setAttribute('data-pl', inp[i].getAttribute('placeholder'));
	inp[i].value = inp[i].getAttribute('placeholder');
}
  var o = {
    focus: function (e) {
      e = e.target || e.srcElement;
      if(!e.type == 'text') return;
      if(e.value == e.getAttribute('data-pl')) {
        e.value = '';
        e.style.color = 'black'
      }
      addevent(e, 'blur', o.blur);
    },
    
    blur: function (e) {
      e = e.target || e.srcElement;
      if(e.value === '' || e.value == ' ') {
        e.value = e.getAttribute('data-pl');
        e.style.color = 'silver';
      }
      delevent(e, 'blur', o.blur);
     },
     createPlaceholder: function (place) {
     var input = document.createElement('input');
           input.type = 'text';
           if('placeholder' in document.createElement('input') input.placeholder = place;
           else input.setAttribute('data-bl', plc);

           return input;
	 },
	 event: function () {
          if('placeholder' in document.createElement('input')) return;
	 	addevent(document.body, 'click', o.focus);
		addevent(document.body, 'blur', o.blur);
	 }
  }
o.event();
return o;
};

var fn1 = fn()
console.log(fn1)


[/JS]
</script>

</html>


через createPlaceholder можно создавать смело input.

Последний раз редактировалось caetus, 16.01.2015 в 16:31.
Ответить с цитированием
  #13 (permalink)  
Старый 16.01.2015, 16:34
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

у меня работает ie8+
Ответить с цитированием
  #14 (permalink)  
Старый 16.01.2015, 19:39
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

caetus, ты не правильно понял.

В общем, вроде бы работает: http://learn.javascript.ru/play/rc5dBb

Работает в IE8-9 и в последнем Firefox'е (отключил проверку для теста), надеюсь в старых версиях тоже получится.
Пока не решил проблему с автозаполнением браузера по F5.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #15 (permalink)  
Старый 24.01.2015, 11:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Короче, все удалось с таким старьем как Firefox 3.6 и Opera 10.6.
В webkit-based браузерах облом - в них фэйковые дескрипторы нативных свойств DOM-элементов.

Автозаполнение тоже победил. Чуть поправлю код и залью на гитхаб. Правда опоздал я на пару годков с этой темой))
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
placeholder под IE mixtape Events/DOM/Window 4 18.09.2014 22:13
jquery для placeholder работает только для первого input в ie Nailya jQuery 1 13.05.2014 09:57
Изменение значения атрибута. tiros jQuery 0 05.05.2011 00:13
Не могу получить значение атрибута DenQ jQuery 9 06.02.2011 14:33
Кроссброузерно определить значение атрибута faunder Общие вопросы Javascript 5 21.02.2009 22:08