22.03.2018, 12:16
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 33
|
|
Помощь с кнопками radio
Привет всем, нужна ваша помощь, имеется форма, которая передается методом POST. В ней имеется два checkbox, при нажатии на которые становятся активными определенные radio.
Если нажать на первый чекбокс, то активируются следующие элементы:
<input type="checkbox" id="1" value="1" name="group" data-cls="one"/>
<label for="1"><b>Запись публикуется на странице</b></label>
<input type="radio" id="4" value="4" name="user" class="item one" disabled="disabled"/>
<label for="4">Запись доступна только друзьям</label>
<input type="radio" id="5" value="5" name="user" class="item one" disabled="disabled"/>
<label for="5">Запись доступна всем пользователям</label>
Если нажать на второй чекбокс, то активируются следующие элементы:
<input type="checkbox" id="0" value="0" name="group" data-cls="two"/>
<label for="0"><b>Запись публикуется в сообществе</b></label>
<input type="radio" id="2" value="2" name="groups" class="item two" disabled="disabled"/>
<label for="2">Запись публикуется от имени сообщества</label>
<input type="radio" id="3" value="3" name="groups" class="item two" disabled="disabled"/>
<label for="3">Запись публикуется от имени пользователя</label>
Работает все через данный код javascript:
window.addEventListener('DOMContentLoaded', function() {
[].forEach.call(document.querySelectorAll('[data-cls]'), function(btn) {
var cls = btn.dataset.cls;
btn.addEventListener('change', function() {
[].forEach.call( document.querySelectorAll('.item'), function(el) {
el.value = '' ;
el.disabled = !el.classList.contains(cls)
});
});
});
});
Проблема в следующем, если оставить все как есть, то значение radio и checkbox не предаются, проверял через принт пост:
str_replace(' ', ' ', nl2br(print_r($_POST, true)));
Если со всех чекбоксов и радио убрать данные строки, то значения id передаются серверу, в чем проблема?
class="item one" disabled="disabled"
class="item two" disabled="disabled"
А вот что самое интересное, то с инпутами такой проблемы нет, все значения передаются:
<input type="text" id="services" class="item one" placeholder="Экспорт записи: twitter,facebook" name="services" disabled="disabled"/>
Последний раз редактировалось timko_ya, 22.03.2018 в 12:25.
|
|
22.03.2018, 12:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
el.value = '' ; - это зачем?
|
|
22.03.2018, 12:45
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 33
|
|
Незнаю, воспользовался готовым решением, но, если ее убрать, то все равно, значения не передаются.
|
|
22.03.2018, 12:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от timko_ya
|
[].forEach.call( document.querySelectorAll('.item'), function(el) {
el.value = '' ;
|
Означает, что при каждой смене состояния флажка изменяются не только состояния кнопок, но и удаляется их значения, а значит сервер в любом случае получить пустое значение.
|
|
22.03.2018, 12:55
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 33
|
|
и как это можно изменить, если удалить данную строку, то при выборе чекбокса, ничего активным не становится.
|
|
22.03.2018, 12:57
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 33
|
|
А все, не надо, разобрался, спасибо.
|
|
22.03.2018, 12:59
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от timko_ya
|
если удалить данную строку, то при выборе чекбокса, ничего активным не становится.
|
Тут скорее важно понять логику того, чего вы на сервере хотите, а техническая сторона на клиенте, это вторично.
Для чего у вас флажки? Если для клиента дабы свойство флажков изменять, тогда да, нужно выпендриваться. Но если сервер проверяет значение флажка пришедшего, то он может определить какую из групп кнопок учитывать, а какую игнорировать?
Последний раз редактировалось laimas, 22.03.2018 в 13:03.
|
|
22.03.2018, 13:05
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 33
|
|
Форма связанна с апи вконтакте, флажки нужны для включения или отключения определенных функций, для группы одни функции, а вот для личной страницы пользователя другие. Вот я и остановился на такой функции, если выбрал первый чекбокс, то функции для страницы пользователя становятся активными, если второй, то для сообщества. Если оставить все как есть, и не менять свойство флажков, например выделить функции и для группы и для пользователя, то в ответ придет не response , ка надо, а ошибка error.
Последний раз редактировалось timko_ya, 22.03.2018 в 13:08.
|
|
22.03.2018, 13:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от timko_ya
|
Форма связанна с апи вконтакте, флажки нужны для включения или отключения определенных функций, для группы одни функции, а вот для сообщества другие. Вот я и остановился на такой функции, если выбрал первый чекбокс, то функции для страницы пользователя становятся активными, если второй, то для сообщества.
|
Это прелюдии и серверному ЯП совсем не нужны, ему ставятся конкретные задачи: взять это, положить сюда, если это не "это", то забыть об этом. А кому из людишек и для чего это надо... его это не волнует.
Не отмеченный флажок на сервер передан не будет. Каждый из них имеет разные значения.
1) - сервер вообще не получил $_POST['group'] - он может понять что это означает?
2) - сервер получил $_POST['group'] со значением 0 или 1 - он может понять какую соответствующую группу хотел клиент?
То есть клиент пусть хоть защелкается кнопками обеих групп, если серверу поставлена задача, что флажок первичный, то клиентские проблемы его не колышат.
Последний раз редактировалось laimas, 22.03.2018 в 13:14.
|
|
22.03.2018, 13:19
|
Аспирант
|
|
Регистрация: 06.11.2017
Сообщений: 33
|
|
Если пользователь выберет для группы, то перед значением 123456 поставится знак минус, если он это значение не выберет, отправится только 123456.
|
|
|
|