пропадает значение 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, время: 08:11. |