пропадает значение 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); } } } |
Цитата:
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() |
по-моему разобрался, спасибо за пояснения.
посмотри, правильно ли я все сделал, может быть будут другие замечания? 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); } } } |
Цитата:
|
благодарю за помощь
|
Часовой пояс GMT +3, время: 13:05. |