Динамически изменять “id” и “label for” у инпутов

247
06 марта 2017, 12:08

Здравствуйте!

Вопрос следующий...

Как мне автоматически изменять id и label for у инпутов?

Например

<input type="radio" id="id1">
<label for="id1"></label>
<input type="radio" id="id2">
<label for="id2"></label>

Прошу обратить внимание, что input находиться не внутри label, если это имеет значение

Answer 1

$('#add-field').on('click', function(){ 
  var nextId = $('input[type=checkbox]').length + 1; 
   
  $('#wrapper').append('<input type="checkbox" id="id' + (nextId) + '"><label for="id' + nextId + '">Checkbox ' + nextId + '</label>'); 
});
label:after { 
  content: ''; 
  display: block; 
  margin-top: 10px; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="wrapper"> 
  <input type="checkbox" id="id1"> 
  <label for="id1">Checkbox 1</label> 
 
  <input type="checkbox" id="id2"> 
  <label for="id2">Checkbox 2</label>   
</div> 
 
<button id="add-field">Добавить</button>

Answer 2

Это довольно странно, лучше генерировать сразу нормальные ID, но...

Array.from(document.querySelectorAll('label[for]')).forEach(l => { 
  let id = l.getAttribute('for'), 
      inp = document.querySelector(`#${id}`), 
      newID = id + '1'; // Главное - не генерируйте для ВСЕХ элементов один ID; один раунд - один ID 
       
  if(inp) 
    l.setAttribute('for', newID), inp.setAttribute('id', newID); 
});
<input type="checkbox" id="id1"> 
<label for="id1">Checkbox 1</label> 
 
<input type="checkbox" id="id2"> 
<label for="id2">Checkbox 2</label>

READ ALSO
Отправка данных формы AJAX

Отправка данных формы AJAX

Не пойму почему AJAX не передает данные?

335
Глобальная перемена JavaScript

Глобальная перемена JavaScript

вот вызов функции

329
build frontend проекта с jquery bootstrap на grunt gulp

build frontend проекта с jquery bootstrap на grunt gulp

возможно ли сделать так что все собственно написанные исходники и исходники из папки npm_modules строились(компилировались) в папку с публичной...

266