Поэтому я пытаюсь написать javaScript для проверки формы. У меня есть шесть входов радио типа, из которых один должен быть проверен. Радиокнопки размещаются в двух рядах по трем радио входам. Одна строка имеет имя "inschrijving1", а остальные три входа другой строки имеют имя "inschrijving2". Это код, который я использовал для проверки формы, но с этим кодом он всегда возвращается как false и всегда дает предупреждение.
if(!document.getElementsByName("inschrijving1").checked || !document.getElementsByName("inschrijving2").checked)
{
alert("Selecteer een dagdeel voor de inschrijving");
return false;
}
Кто-нибудь может понять, почему это так? Мне нужно только вернуть false и дать предупреждение, если ни один из шести радиовходов не проверен.
Поскольку getElementsByName()
возвращает элемент collection/nodeList элементов, который не имеет коллективно checked
свойства. Для этого вам нужно явно перебрать каждый возвращаемый элемент и проверить их отдельно.
Предполагая, что у вас есть только один элемент для каждого name
:
if(!document.getElementsByName("inschrijving1")[0].checked || !document.getElementsByName("inschrijving2")[0].checked)
Или в совместимом браузере с более чем одним из них:
if(!document.querySelector("name=['inschrijving1']:checked") || !document.getElementsByName("name=['inschrijving2']:checked"))
document.querySelector()
возвращает только первый синтаксис соответствия (с использованием синтаксиса CSS), который удовлетворяет поставленному селектору.
Рекомендации:
getElementsByName
возвращает массив, потому что это множественное число.