Сообщение от timko_ya
|
Ну, если обмануть, то результат error.
|
Ох уж эти пионеры
Я попробую пояснить на примере, почему все вами показанное, то есть и представление данных, и следовательно ожидания на сервере, и клиентский код, это сплошная глупость.
Не важно что, важно как. Пусть есть в базе две группы "менов": "Мачо" и "Ботаники". Каждая эта группа описана в таблице и имеет уникальный идентификатор:
1, Мачо
2, Ботаники
Члены этих групп описываются в связанных таблица, то есть, для каждой группы своя таблица ее членов, которые также имеют уникальный идентификатор:
Члены группы Мачо
1, Джон
2, Джек
3, Арнольд
Члены группы Ботаники
1, Томас
2, Чарли
То есть, идентификаторы членов разных групп могут совпадать. Задача - получить выбор одного пользователя какой либо группы. Для этого имена полей формы будут связаны по идентификатору группы, а значения их будут равны идентификаторам члена группы. Но если отдать форму как есть:
<form id="f1">
<fieldset>
<legend>Мачо</legend>
<label><input type="radio" name="group[1]" value="1" /> Джон</label>
<label><input type="radio" name="group[1]" value="2" /> Джек</label>
<label><input type="radio" name="group[1]" value="3" /> Арнольд</label>
</fieldset>
<fieldset>
<legend>Ботаники</legend>
<label><input type="radio" name="group[2]" value="1" /> Томас</label>
<label><input type="radio" name="group[2]" value="2" /> Чарли</label>
</fieldset>
</form>
То выбрать только одного из из любой группы не получится, при этом лишние элементы серверу не нужны. Выход - сбрасывать выбор в группе противоположной текущей:
<form id="f1">
<fieldset>
<legend>Мачо</legend>
<label><input type="radio" name="group[1]" value="1" /> Джон</label>
<label><input type="radio" name="group[1]" value="2" /> Джек</label>
<label><input type="radio" name="group[1]" value="3" /> Арнольд</label>
</fieldset>
<fieldset>
<legend>Ботаники</legend>
<label><input type="radio" name="group[2]" value="1" /> Томас</label>
<label><input type="radio" name="group[2]" value="2" /> Чарли</label>
</fieldset>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
$('#f1').on('change', 'input:radio', function() {
$(this).closest('fieldset').siblings().find('input').prop('checked', false)
})
});
</script>
Чего-то в этой форме делать "disabled" бессмысленно, так как не даст нужного результата.
Но если члены группы будут содержаться в одной таблице, тогда кроме идентификатора и имени, они должны иметь и идентификатор группы, которой принадлежат. При этом идентификатор члена группы будет у каждого уникален.
Таблица членов групп:
1, 1, Джон
2, 1, Джек
3, 1, Арнольд
4, 2, Томас
5, 2, Чарли
А форма будет возвращать серверу нужное и без всяких скриптов
<form id="f1">
<fieldset>
<legend>Мачо</legend>
<label><input type="radio" name="group" value="1" /> Джон</label>
<label><input type="radio" name="group" value="2" /> Джек</label>
<label><input type="radio" name="group" value="3" /> Арнольд</label>
</fieldset>
<fieldset>
<legend>Ботаники</legend>
<label><input type="radio" name="group" value="4" /> Томас</label>
<label><input type="radio" name="group" value="5" /> Чарли</label>
</fieldset>
</form>
Сервер по уникальному идентификатору члена группы может узнать к какой группе он принадлежит. Какие-то сценарии делающие недоступными кнопки в форме такой просто бессмысленны, если уж и щелкать по флажку, то ради только скрывать/показывать ту или иную группу.
У вас значения как раз и имеют уникальные идентификаторы, и ваши действия на клиенте не понятно ради чего.