добавление новых текстовых полей через 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> |
Кросс-браузерное оздание инпутов:
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 = "…"; } |
Часовой пояс GMT +3, время: 22:20. |