Итак, у меня есть следующий jQuery код, который я построил, который проверяет, было ли запущено событие on change на # rtk5, а затем либо удаляет, либо добавляет атрибут 'required'.
Прекрасно работает в jQuery:
// Make checkbox textboxes not required unless checked
$(document).ready(function() {
$('#rtk5').change(function() {
if ($('.rtk5ReqField').attr('required')) {
$('.rtk5ReqField').removeAttr('required');
}
else {
$('.rtk5ReqField').attr('required','required');
}
});
});
Я хотел бы преобразовать его в JavaScript с помощью вызова функции, но я не могу понять, как это правильно сделать .
Ошибка:
TypeError: rtk5req.getAttribute is not a function
Вот моя попытка:
var rtk5req = document.getElementsByClassName('rtk5ReqField');
function rtk5Required() {
rtk5req.addEventListener('change', (e) => {
if (rtk5req.getAttribute('required')) {
rtk5req.removeAttribute('required');
} else {
rtk5req.getAttribute('required', 'required');
}
});
}
rtk5req.addEventListener('change', rtk5Required());
document.addEventListener('DOMContentLoaded', rtk5Required);
rtk5Required();
Обновлен код : удален повторяющийся вызов на изменение
var rtk5req = document.getElementsByClassName('rtk5ReqField');
function rtk5Required() {
if (rtk5req.getAttribute('required')) {
rtk5req.removeAttribute('required');
} else {
rtk5req.getAttribute('required', 'required');
}
}
rtk5req.addEventListener('change', rtk5Required());
document.addEventListener('DOMContentLoaded', rtk5Required);
rtk5Required();
Обновленный код # 2 :
Спасибо всем за всю тяжелую работу, есть одна небольшая проблема, с которой я все еще сталкиваюсь, и мне пришлось внести некоторые изменения - Когда я снимаю флажок, он не удаляет необходимый тег, помещенный в rtk5Declaration
, из которого он сделал в jQuery.
var rtk5_selection = document.getElementById('rtk5');
document.addEventListener('DOMContentLoaded', () => {
rtk5_selection.addEventListener('change', () => {
if (rtk5_selection.getAttribute('required')) {
document.getElementById('rtk5Declaration').removeAttribute('required');
} else {
document.getElementById('rtk5Declaration').setAttribute('required', 'required');
}
});
});
Большое спасибо всем!