У меня есть динамически сгенерированная форма - внутри нее есть несколько полей с их собственными элементами. Среди них - радиокнопка. Здесь упрощенный фрагмент:
<form name="ePIC" method="post" action="test.php">
<fieldset>
<input type="radio" name="pic[1]" />
</fieldset>
<fieldset>
<input type="radio" name="pic[2]" />
</fieldset>
<input type="submit" name="submit" value="test" />
</form>
В принципе, на полях есть изображения, а переключатели - для выбора обложки для альбома.
Все работает отлично, за исключением того факта, что, поскольку радиокнопки называются по-разному, они не будут действовать как группа, то есть сразу можно выбрать несколько переключателей.
Может ли кто-нибудь сказать мне, как заставить переключатели действовать как группа, возможно, с javascript/jQuery?
Я начал пытаться управлять кнопками по классу, но заблудился в том, как воздействовать на все остальные переключатели одним щелчком мыши.
Этот код jQuery удалит часть [n]
всех имен кнопок, поэтому все кнопки с одним и тем же именем будут сгруппированы вместе.
$(":radio").attr('name', function(i, name) {
$(this).data('orig-name', name);
return name.replace(/\[.*\]/, '');
});
Используйте этот обработчик submit
чтобы вернуть исходные имена с индексами при отправке формы.
$("form").submit(function() {
$(this).find(':radio').attr('name', function() {
return $(this).data('orig-name');
});
});
Лучше использовать одно и то же имя, но если вы не можете:
$('input[type="radio"]').change(function(){
// Deselect all
$('input[type="radio"]').attr('checked', false);
// Select current
$(this).attr('checked', true);
});
Вам нужно создать их с тем же именем, но вы можете присвоить им разные значения атрибутом value
.
Если вы используете одно и то же name
для обоих переключателей, разрешается выбирать только один. Взгляните на приведенный ниже код.
<form name="ePIC" method="post" action="test.php">
<fieldset>
<input type="radio" name="pic" value="1" />
</fieldset>
<fieldset>
<input type="radio" name="pic" value="2" />
</fieldset>
<input type="submit" name="submit" value="test" />
</form>
[n]
?