Здравствуйте. Есть форма:
.inp {
margin: 15px;
}
<form action="?" method="post">
<div class="inp">
<input type="text" name="name" readonly /> <a href="javascript:void(0);">изменить имя</a>
</div>
<div class="inp">
<input type="text" name="familia" readonly /> <a href="javascript:void(0);">изменить фамилию</a>
</div>
<div class="inp">
<input type="text" name="login" readonly /> <a href="javascript:void(0);">изменить логин</a>
</div>
</form>
Вопрос: Каким образом сделать что бы при клике по ссылке рядом с полем - поле становилось доступным для ввода текста?
Возможно вопрос примитивный, но я в JavaScript практически не разбираюсь. Буду благодарен за любую полезную информацию!
var link = document.querySelectorAll('form a');
for (var i=0; i<link.length; i++ ) {
link[i].onclick = function(event) {
event.preventDefault;
this.parentElement.querySelector('input').readOnly = false;
}
}
input:read-only {
background: silver;
border: none;
}
<form action="?" method="post">
<div class="inp">
<input type="text" name="name" readonly /> <a href="javascript:void(0);">изменить имя </a>
</div>
<div class="inp">
<input type="text" name="familia" readonly /> <a href="javascript:void(0);">изменить фамилию</a>
</div>
<div class="inp">
<input type="text" name="login" readonly /> <a href="javascript:void(0);">изменить логин</a>
</div>
</form>
P.S. Добавил стили для демонстрации редактируемости
P.P.S. Если поля в форму добавляются динамически, то лучше использовать делегирование событий - навешивать обработчик на форму и слушать клики по всем ссылкам.
С использованием фич EcmaScript 6/2015:
var links = document.querySelectorAll("a");
Array.from(links).forEach(link => {
link.addEventListener("click", () => {
link.previousElementSibling.removeAttribute("readonly");
});
});
<form action="?" method="post">
<div class="inp">
<input type="text" name="name" readonly /> <a href="javascript:void(0);">изменить имя</a>
</div>
<div class="inp">
<input type="text" name="familia" readonly /> <a href="javascript:void(0);">изменить фамилию</a>
</div>
<div class="inp">
<input type="text" name="login" readonly /> <a href="javascript:void(0);">изменить логин</a>
</div>
</form>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть заявка, которая открывается AJAX' в поп-апе с помощью плагина Magnific-Popup
Как настроить анимацию так, чтобы элементы плавно плыли по течениюДумаю проблема в процентный значениях между кадрами
Можно ли передать GET-параметр в action контроллера при клике на ссылку?