Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2020, 11:51
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Как добавить уникальный идентификатор для нового поля формы?
<script>
function addField() {
document.getElementById("choice_poll").insertAdjacentHTML('beforeEnd', '<input id="answers" type="text" name="answers" value="">');
}
</script>
<fieldset>
<span class="ad_label">Варианты ответов</span>
<div id="choice">
<div id="choice_poll"><input id="answers[0]" type="text" name="answers" value="">
<input id="answers[1]" type="text" name="answers" value="">
</div><span><a href="#" onclick="addField(); return false;">Добавить поля</a></span></div>
</fieldset>


Есть простенький скрипт, указанный выше. Пользователь может добавить любое необходимое ему количество полей в форму. Проблема заключается в том, что идентификатор должен быть уникальным, а пример выше создаёт поля с одинаковыми идентификаторами.

В качестве примера я подставил в поля input как это должно выглядеть. Например, у нас по-умолчанию есть 2 поля: answers[0] и answers[1], соответственно при нажатии на "Добавить поля" в документе должно появиться answers[2], затем answers[3] и так далее.

Буду признателен за подсказки.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2020, 12:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

javascript_pupil,
function addField() {
let {length : i} = document.querySelectorAll('[name="answers"]');
document.getElementById("choice_poll").insertAdjacentHTML('beforeEnd', `<input id="answers[${i}]" type="text" name="answers" value="">`);
}
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2020, 12:44
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Спасибо, работает!

А в IE 11 не должен работать? Ругается: "addField" не определено. В других браузерах всё норм.
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2020, 12:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

javascript_pupil,
function addField() {
let i = document.querySelectorAll('[name="answers"]').length;
document.getElementById("choice_poll").insertAdjacentHTML('beforeEnd', '<input id="answers['+i+']" type="text" name="answers" value="">');
}
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2020, 13:06
Профессор
Отправить личное сообщение для javascript_pupil Посмотреть профиль Найти все сообщения от javascript_pupil
 
Регистрация: 05.07.2009
Сообщений: 222

Спасибо! А то я как "старовер" до сих пор им пользуюсь для своих сайтов.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать обработку динамически созданной формы через ajax? Wimko AJAX и COMET 4 08.10.2019 16:37
как добавить plugins для grid в проект yarrrman ExtJS 4 17.12.2015 10:50
initComponent: Как получить данные родителя и как получить store для вызова load()? Пролетарий ExtJS 76 04.07.2015 09:22
Взять скрытые поля формы и добавить их в FormData hrundel Общие вопросы Javascript 2 14.04.2014 19:28
Подгружаемые поля формы AlexJ AJAX и COMET 2 26.06.2009 18:04