#javascript #html #dom #frontend #radio
#javascript #HTML #формы #переключатель
Вопрос:
У меня есть несколько переключателей на моей веб-странице. при нажатии на переключатель он проверяет, но когда я нажимаю снова, он не отменяет проверку. я попытался добавить функцию JS onclick
document.querySelectorAll('input[type="radio"]').forEach(x => x.addEventListener('click',function(){
if(this.checked == true){
this.checked = false;
}
else {
this.checked = true;
}
}))
когда я добавил этот метод, он позволил мне снять флажок, но не позволил мне проверить ни один из них!
что я могу пропустить?
это мои флажки:
<input type="radio" id="name" name="name"><br>
<input type="radio" id="age" name="age"><br>
<input type="radio" id="email" name="email"><br>
Комментарии:
1. поставьте точку с запятой в конце.
2. JavaScript не обязательно требует точки с запятой. Я пытался, но это не имело никакого значения.
3. Обратитесь к этому, w3schools.com/jquery/tryit.asp?filename=tryjquery_sel_radio
4. для ссылки, которой вы поделились, радиоприемники имеют одинаковое имя, поэтому один из них снимается, когда вы проверяете другой. т. Е. Вы можете выбрать только один. в моем случае радиостанции совершенно не связаны, и каждый из них ссылается на что-то другое. я пытаюсь иметь возможность проверять или отменять какие-либо проверки. может быть, все. возможно, нет.
5. если вы хотите выбрать только один, вы должны указать одинаковые имена. и выберите несколько переключателей, которым вы должны дать разные имена в моем ответе. но во втором условии лучше использовать флажок.
Ответ №1:
Все они имеют разные name
значения атрибутов — поэтому их можно только проверять (потому что они не сравниваются с другим родственным значением radio). Я думаю, вы, возможно, ищете type="checkbox"
вместо:
<input type="checkbox" id="name" name="name"><br>
<input type="checkbox" id="age" name="age"><br>
<input type="checkbox" id="email" name="email"><br>
Комментарии:
1. @laylal00 Не стесняйтесь отмечать как ответивший на ваш вопрос, чтобы помочь тем, кто может столкнуться с той же проблемой в будущем 🙂
Ответ №2:
Пример: удерживайте Ctrl
нажатой клавишу ( ⌘
на mac), чтобы снять флажок.
var radios = document.getElementsByTagName('input');
for(i=0; i<radios.length; i ) {
radios[i].onclick = function(e) {
if(e.ctrlKey || e.metaKey) {
this.checked = false;
}
}
}
<input type="radio" name="test" value="1" />
<input type="radio" name="test" value="2" checked="checked" />
<input type="radio" name="test" value="3" />
Комментарии:
1. могу ли я узнать, на что ссылается e? это то, что мне нужно определить в моем браузере или просто переменная? потому что e показывает undefined для этого решения
2.
e
это короткая ссылка var для объекта event, которая будет передана обработчикам событий.
Ответ №3:
Использовать <input type="checkbox"
, нет <input type="radio"
. Переключатель используется там, где вам нужно выбрать один из нескольких параметров (которые должны иметь одинаковый name
).
Например,
<input type="radio" name="gender" id="male" value="male"> <br>
<input type="radio" name="gender" id="female" value="female"> <br>
<input type="radio" name="gender" id="other" value="other">
Узнайте больше о переключателях и флажках.
Ответ №4:
document.querySelectorAll('input[type="radio"]').forEach(x => x.addEventListener('click',function(){
if(this.value == 0){
this.checked = true;
document.querySelectorAll('input[type="radio"]').forEach(x=>x.value=0);
this.value = 1;
}
else {
this.checked = false;
document.querySelectorAll('input[type="radio"]').forEach(x=>x.value=0);
this.value = 0;
}
}))
<input type="radio" value="0" id="name" name="test"><br>
<input type="radio" value="0" id="age" name="test"><br>
<input type="radio" value="0" id="email" name="test"><br>