Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2009, 14:16
Интересующийся
Отправить личное сообщение для boris2000 Посмотреть профиль Найти все сообщения от boris2000
 
Регистрация: 25.11.2009
Сообщений: 22

добавление новых текстовых полей через js в форму
есть форма для добавления литературного источника, в которой есть поля для списка авторов. часть авторов уже известна (массив authors_array), и пользователю надо дать возможность добавить новых авторов если необходимо. функция добавления новых авторов (moreFields) работает замечательно, а вот генерация полей на основании данных массива не работает!
Помогите разобраться.

Код:
// кусочек хтмл-кода задающего шаблон для генерации полей для авторов 
<div id="readroot" style="display: none">
	<input type="text" name="pubauthor" size="40" value="" id="pubauthor"/>
	<input type="button" value="Remove author" onclick="this.parentNode.parentNode.removeChild(this.parentNode);" />
</div>

// собственно JavaScript
<script language="JavaScript">
<!-- ;

var counter = 0;
// сгенерированный массив
authors_array = new Array("Иванов", "Петров");

function fillauthorsarray(){

	if(authors_array.length >= 1){
		for(j=0; j<=authors_array.length; j++) {
			counter++;
			var newFields = document.getElementById('readroot').cloneNode(true);
			newFields.id = '';
			newFields.style.display = 'block';
			var newField = newFields.childNodes;

			for (var i=0;i<newField.length;i++) {
				var theName = newField[i].name
				if (theName){
					newField[i].name = theName + counter;
					newField[i].id = theName + counter;
					newField[i].value = authors_array(j);
				}
			}
			var insertHere = document.getElementById('writeroot');
			insertHere.parentNode.insertBefore(newFields,insertHere);
		}
	}
}	 


function moreFields() {
	counter++;
	alert (counter );//+ authors_array(counter-1)
	var newFields = document.getElementById('readroot').cloneNode(true);
	newFields.id = '';
	newFields.style.display = 'block';
	var newField = newFields.childNodes;
	for (var i=0;i<newField.length;i++) {
		var theName = newField[i].name
		if (theName){
			newField[i].name = theName + counter;
			newField[i].id = theName + counter;
		}
	}
	var insertHere = document.getElementById('writeroot');
	insertHere.parentNode.insertBefore(newFields,insertHere);
}

window.onload = fillauthorsarray();

// end hide -->
</script>

Последний раз редактировалось boris2000, 25.11.2009 в 14:18.
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2009, 14:32
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Кросс-браузерное оздание инпутов:
function parseHTML(htmlCode) {
    var node = document.createElement("div");
    node.innerHTML = htmlCode;
    return node.firstChild;
}

var input = parseHTML('<input type="…" name="…" />');


или

var input;
try {
    input = document.createElement('<input type="…" name="…" />');
}
catch (error) {
    input = document.createElement("input");
    input.type = "…";
    input.name = "…";
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
eMail через JS konstantinopol Общие вопросы Javascript 15 12.01.2015 10:06
Добавление и удаление полей в форму anoth3r Events/DOM/Window 1 11.09.2009 15:10
Файл *.sqlitedb через JS Nikitos* Общие вопросы Javascript 6 25.12.2008 22:05
Проблемы с подгрузкой новых JS скриптов на странцу OnArs Общие вопросы Javascript 2 05.10.2008 21:49
Добавление новых полей к форме. EZh Элементы интерфейса 7 14.06.2008 04:05