Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.04.2012, 19:30
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

пропадает значение type="text"
function changeField(id) {
	var elem = document.getElementById(id);
	var value = elem.innerText; 
		elem.innerHTML='';
	var input = document.createElement('input');
		input.type = "text"; 
		input.name = id; 
		input.value = value; 
		input.onchange = function() {
			return validation_edit_user_admin(input,elem,value);
		}
	elem.appendChild(input);
}

function validation_edit_user_admin(node,elem,value) {
	var reg = "^[\.\s 0-9a-zA-Z_-]+$";
	var flags = "i";
	var p = regular(reg, flags, node.value);
	if (p) {
		if (document.getElementById('error')) $(document.getElementById('error')).remove();
		node.style.color = '#00ff00';
		//alert(node.value); даст парвильное значение, то что и должно быть
		elem.innerHTML += '<br><a>сохранить</a>'; //но вот здесь в поле input будет пусто. куда-то пропадает node.value
		//alert(node.value); также даст правильное значение, то что и должно быть, следовательно оно хранится, а не удаляется
	}
	else {
		node.style.color = '#ff0000';
		if (!document.getElementById('error')) {
			var tr = document.getElementById(value);
			var td = document.createElement('td');
			td.id = 'error';
			td.innerText = 'недопустимые символы';
			td.style.color = '#ffff00';
			tr.appendChild(td);
		}
	}
}

Последний раз редактировалось bpystep, 15.04.2012 в 19:40.
Ответить с цитированием
  #2 (permalink)  
Старый 15.04.2012, 19:50
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от bpystep
elem.innerHTML += '<br><a>сохранить</a>';
Эта строчка аналогична строке
var old_html = elem.innerHTML;
var new_html = old_html + '<br><a>сохранить</a>'//<input type="text" value="" /><br><a>сохранить</a>'
elem.innerHTML = new_html;


При этом все что находилось внутри elem - было из него убрано, и создано по-новой.
То есть INPUT в нем после этой операции, и INPUT до операции - это разные INPUT-ы.
Ссылку на старый INPUT вы сохранили в переменную node, и поэтому в этой переменной ссылка на старый элемент со старыми данными.
А вот новый элемент был создан уже без этих данных.

То же самое происходит с обработчиками события на INPUT_е: Вы повесили их на старый INPUT, а новый был создан без них.

Для того чтобы старые элементы сохранялись надо добавлять новые методами DOM, напрмиер через appendChild()
Ответить с цитированием
  #3 (permalink)  
Старый 15.04.2012, 20:08
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

по-моему разобрался, спасибо за пояснения.
посмотри, правильно ли я все сделал, может быть будут другие замечания?
function validation_edit_user_admin(node,elem,value) {
	reg = "^[\.\s 0-9a-zA-Z_-]+$";
	var flags = "i";
	var p = regular(reg, flags, node.value);
	if (p) {
		if (document.getElementById('error')) $(document.getElementById('error')).remove();
		node.style.color = '#00ff00';
		if (!document.getElementById('saveGet')) {
			var a = document.createElement('a')
				a.innerHTML = '<br>сохранить';
				a.id = 'saveGet';
			elem.appendChild(a);
		}
	}
	else {
		node.style.color = '#ff0000';
		if (document.getElementById('saveGet')) $(document.getElementById('saveGet')).remove();
		if (!document.getElementById('error')) {
			var tr = document.getElementById(value);
			var td = document.createElement('td');
			td.id = 'error';
			td.innerText = 'недопустимые символы';
			td.style.color = '#ffff00';
			tr.appendChild(td);
		}
	}
}
Ответить с цитированием
  #4 (permalink)  
Старый 15.04.2012, 20:11
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от bpystep
правильно ли я все сделал
вроде да
Ответить с цитированием
  #5 (permalink)  
Старый 15.04.2012, 20:14
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

благодарю за помощь
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как не дать пользователю ввести неправильное значение в текстовый инпут ? boraldo Events/DOM/Window 4 12.04.2012 15:43
В contains() не подставляется значение переменной Heger jQuery 2 11.12.2011 20:26
Значение переменной salex009 jQuery 1 05.12.2011 16:55
оператор return возвращает значение, а не ссылку. Vertuplatonium Общие вопросы Javascript 4 16.05.2011 14:02
получить значение из select'a rrb Элементы интерфейса 5 29.05.2009 15:32