Задать вопрос
copyloc
@copyloc
Человек то я не глупый, просто притворяюсь

Почему перестает работать onBlur?

Сам код:
<textarea id="codePHP" name="PHP" onBlur = 'Press_Generator_PHP("codePHP")'></textarea>
<script>
    createTextAreaWithLines('codePHP');
</script>


Функция Press_Generator_PHP():
function Press_Generator_PHP(Code) {
 document.getElementById('Press').innerHTML=document.getElementById(Code).value;
}


Функция createTextAreaWithLines():
var lineObjOffsetTop = 2;
function createTextAreaWithLines(id)
{
	var el = document.createElement('DIV');
	var ta = document.getElementById(id);
	ta.parentNode.insertBefore(el,ta);
	el.appendChild(ta);
						 
	el.className='textAreaWithLines';
	el.style.width = (ta.offsetWidth + 40) + 'px';
	ta.style.position = 'absolute';
	ta.style.left = '40px';
	el.style.height = (ta.offsetHeight + 0) + 'px';
	el.style.overflow='hidden';
	el.style.position = 'relative';
	el.style.width = (ta.offsetWidth + 40) + 'px';
						  
	var lineObj = document.createElement('DIV');
	lineObj.style.position = 'absolute';
	lineObj.style.top = lineObjOffsetTop + 'px';
	lineObj.style.left = '0px';
	lineObj.style.width = '33px';
	el.insertBefore(lineObj,ta);
	lineObj.style.textAlign = 'right';
	lineObj.className='lineObj';
						
	var string = '';
	for(var no = 1; no < 999; no++){
		if(string.length > 0) string = string + '<br>';
			string = string + no;
	}
						 
	ta.onkeydown = function() { positionLineObj(lineObj,ta); };
	ta.onmousedown = function() { positionLineObj(lineObj,ta); };
	ta.onscroll = function() { positionLineObj(lineObj,ta); };
	ta.onblur = function() { positionLineObj(lineObj,ta); };
	ta.onfocus = function() { positionLineObj(lineObj,ta); };
	ta.onmouseover = function() { positionLineObj(lineObj,ta); };
	lineObj.innerHTML = string; 
}
					   
function positionLineObj(obj,ta) {
	obj.style.top = (ta.scrollTop * -1 + lineObjOffsetTop) + 'px';   
}


1 функция означает вывод содержимого textarea после потери фокуса.
2 функция нужна для создания нумерации у textarea.

Обе функции рабочие. Первая работает нормально, но после подключение второй функции(createTextAreaWithLines()), onBlur перестает срабатывать.

Может проблема в том что они ссылаются на один id?
  • Вопрос задан
  • 2375 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
VovanR
@VovanR
Фронт-энд Вэб-разработчик
Да, потомучто в createTextAreaWithLines переопределяется обработчик onblur
Почитай Способы добавления обработчиков в сравнении
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект