Делая переключатели с разными именами, действуйте так, как если бы они были в группе

0

У меня есть динамически сгенерированная форма - внутри нее есть несколько полей с их собственными элементами. Среди них - радиокнопка. Здесь упрощенный фрагмент:

    <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?

Я начал пытаться управлять кнопками по классу, но заблудился в том, как воздействовать на все остальные переключатели одним щелчком мыши.

  • 0
    Почему они не могут иметь одно и то же имя?
  • 0
    Как можно найти переключатели, которые должны входить в одну группу? Будут ли они иметь одно и то же имя, кроме части [n] ?
Показать ещё 3 комментария
Теги:

4 ответа

1
Лучший ответ

Этот код 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');
    });
});
  • 0
    будут ли переключатели сохранять свои индексы при публикации формы?
  • 0
    Нет, они не будут. Вы должны использовать значение, чтобы узнать, какая кнопка была выбрана в каждой группе.
Показать ещё 3 комментария
1

Лучше использовать одно и то же имя, но если вы не можете:

$('input[type="radio"]').change(function(){
    // Deselect all
    $('input[type="radio"]').attr('checked', false);
    // Select current
    $(this).attr('checked', true);
});
  • 0
    прежде чем я приму ваш ответ, я попытаюсь использовать значения переключателей для сохранения идентификатора изображения вместо использования индекса.
  • 0
    я думаю, id в значениях должны работать для вас :)
0

Вам нужно создать их с тем же именем, но вы можете присвоить им разные значения атрибутом value.

0

Если вы используете одно и то же 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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню