Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2018, 12:16
Аспирант
Отправить личное сообщение для timko_ya Посмотреть профиль Найти все сообщения от timko_ya
 
Регистрация: 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('  ', '&nbsp; ', 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.
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2018, 12:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

el.value = '' ; - это зачем?
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2018, 12:45
Аспирант
Отправить личное сообщение для timko_ya Посмотреть профиль Найти все сообщения от timko_ya
 
Регистрация: 06.11.2017
Сообщений: 33

Незнаю, воспользовался готовым решением, но, если ее убрать, то все равно, значения не передаются.
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2018, 12:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от timko_ya
[].forEach.call( document.querySelectorAll('.item'), function(el) {
                   el.value = '' ;
Означает, что при каждой смене состояния флажка изменяются не только состояния кнопок, но и удаляется их значения, а значит сервер в любом случае получить пустое значение.
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2018, 12:55
Аспирант
Отправить личное сообщение для timko_ya Посмотреть профиль Найти все сообщения от timko_ya
 
Регистрация: 06.11.2017
Сообщений: 33

и как это можно изменить, если удалить данную строку, то при выборе чекбокса, ничего активным не становится.
Ответить с цитированием
  #6 (permalink)  
Старый 22.03.2018, 12:57
Аспирант
Отправить личное сообщение для timko_ya Посмотреть профиль Найти все сообщения от timko_ya
 
Регистрация: 06.11.2017
Сообщений: 33

А все, не надо, разобрался, спасибо.
Ответить с цитированием
  #7 (permalink)  
Старый 22.03.2018, 12:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от timko_ya
если удалить данную строку, то при выборе чекбокса, ничего активным не становится.
Тут скорее важно понять логику того, чего вы на сервере хотите, а техническая сторона на клиенте, это вторично.

Для чего у вас флажки? Если для клиента дабы свойство флажков изменять, тогда да, нужно выпендриваться. Но если сервер проверяет значение флажка пришедшего, то он может определить какую из групп кнопок учитывать, а какую игнорировать?

Последний раз редактировалось laimas, 22.03.2018 в 13:03.
Ответить с цитированием
  #8 (permalink)  
Старый 22.03.2018, 13:05
Аспирант
Отправить личное сообщение для timko_ya Посмотреть профиль Найти все сообщения от timko_ya
 
Регистрация: 06.11.2017
Сообщений: 33

Форма связанна с апи вконтакте, флажки нужны для включения или отключения определенных функций, для группы одни функции, а вот для личной страницы пользователя другие. Вот я и остановился на такой функции, если выбрал первый чекбокс, то функции для страницы пользователя становятся активными, если второй, то для сообщества. Если оставить все как есть, и не менять свойство флажков, например выделить функции и для группы и для пользователя, то в ответ придет не response , ка надо, а ошибка error.

Последний раз редактировалось timko_ya, 22.03.2018 в 13:08.
Ответить с цитированием
  #9 (permalink)  
Старый 22.03.2018, 13:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от timko_ya
Форма связанна с апи вконтакте, флажки нужны для включения или отключения определенных функций, для группы одни функции, а вот для сообщества другие. Вот я и остановился на такой функции, если выбрал первый чекбокс, то функции для страницы пользователя становятся активными, если второй, то для сообщества.
Это прелюдии и серверному ЯП совсем не нужны, ему ставятся конкретные задачи: взять это, положить сюда, если это не "это", то забыть об этом. А кому из людишек и для чего это надо... его это не волнует.

Не отмеченный флажок на сервер передан не будет. Каждый из них имеет разные значения.

1) - сервер вообще не получил $_POST['group'] - он может понять что это означает?
2) - сервер получил $_POST['group'] со значением 0 или 1 - он может понять какую соответствующую группу хотел клиент?

То есть клиент пусть хоть защелкается кнопками обеих групп, если серверу поставлена задача, что флажок первичный, то клиентские проблемы его не колышат.

Последний раз редактировалось laimas, 22.03.2018 в 13:14.
Ответить с цитированием
  #10 (permalink)  
Старый 22.03.2018, 13:19
Аспирант
Отправить личное сообщение для timko_ya Посмотреть профиль Найти все сообщения от timko_ya
 
Регистрация: 06.11.2017
Сообщений: 33

Если пользователь выберет для группы, то перед значением 123456 поставится знак минус, если он это значение не выберет, отправится только 123456.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery не может получить значение от Radio button Defrazo Общие вопросы Javascript 6 05.01.2017 00:52
Изменить radio button через изображение Jeick9 Events/DOM/Window 1 10.03.2015 05:57
Отображение определенных элементов таблицы при нажатии на radio Kichiro Элементы интерфейса 2 04.12.2014 18:05
Проблема radio button с кроссбраузерностью shkarbatov Javascript под браузер 0 28.07.2011 10:55
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 14:24