Показать сообщение отдельно
  #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.
Ответить с цитированием