Как передать checked установленный jQury в php и сохранить в переменной?
Как передать checked установленный jQury в php и сохранить в переменной
Есть плагин, на его странице есть две div кнопки (а и b) и две скрытые радиокнопки (а и b). Нужно чтобы при нажатии div кнопки "а" отмечалась радиокнопка "а" и в переменную "active" сохранялось значение "а". Тоже самое и для "b".
Условия:
При нажатии на div кнопку "a" или "b" срабатывает js, который устанавливает для радиокнопки "а" или "b" соответственно, "checked" или иное. И при этом в php в переменной "active" должно сохраняться значение "a" или "b" при нажатии на кнопку "Сохранить".
Подскажите пожалуйста как реализовать передачу данных из JS со стороны клиента в PHP на стороне сервера.
/* СТРАНИЦА ПЛАГИНА */ add_action('admin_menu', 'plugin_page'); function plugin_page() { $page = add_menu_page('Плагин','plugin.php','manage_options','page','form'); add_action('admin_print_scripts-'.$page,'js'); } function js() { wp_register_script('script',plugin_dir_url(__FILE__).'js.js',array('jquery')); wp_enqueue_script('script'); } add_action('admin_init','bsc_header_init'); function bsc_header_init(){ register_setting('page_options','bscHO',''); } function form() { // страница плагина ?> <form method="post" action="options.php" onkeypress="if(event.keyCode == 13) return false;"> <? settings_fields('page_options'); ?> <? $ho = get_option('bscHO'); ?> <div class="button" style="width:100px;height:40px;background:#000;color:#fff;cursor:pointer;"> <p>BUTTON-а</p> <input type="radio" name="bscHO[active]" value="a" <?checked('a',$ho['active']);?> style="display:none;" class="radiobutton"/> </div> <div class="button" style="width:100px;height:40px;background:#000;color:#fff;cursor:pointer;"> <p>BUTTON-b</p> <input type="radio" name="bscHO[active]" value="b" <?checked('b',$ho['active']);?> style="display:none;" class="radiobutton"/> </div> <?=$ho['active']; // вывод значения сохранённой переменной 'active'?> <input type="submit" value="<? _e('Save') ?>" > </form> <? }
/* JQUERY */ jQuery(document).ready(function() { var button = jQuery('.button'); for (var i = 0; i < button.length; i++) { jQuery(button[i]).on('click', function() { jQuery(this).children('.radiobutton').attr('checked','checked'); }); } });
По идее нужно вместо div использовать label, по нажатию по нему будет внутри него отрабатывать смена значения чекбокса или радиобутона. И тогда вам не нужен JS.
Спасибо за ответ, у меня так и было сделано. Но хочется реализовать именно c таким условием как в вопросе, т.к. есть ещё много моментов связанных с подобным, не только с радиокнопками
Ну рас вы любитель извращений, тогда так:
:):) спасибо конечно, но таких способов кучу можно наваять. Вы наверное не поняли сути "Условия" . Дело в том, что я хочу, чтобы JS отследил кнопку, по которой нажали. Далее JS будет менять стили. Я хочу, чтобы к дополнению к этому JS передал данные, например строку в php таким образом, чтобы уже в php можно было сохранить эту строку в переменной, а далее в базе данных после нажатия кнопки "submit", после чего страница перезагружается Сложность заключается в том, что JS выполняется на стороне клиента, а PHP на стороне сервера. Для этого сделали API на сколько я понимаю, а именно AJAX, только я в него не въезжаю пока. Может есть способ реализовать поставленную задачу без AJAX или как-то попроще c AJAX. Я смотрел уроки Тимура, но не понял как мне сделать, что я хочу
Это вам надо читать мануалы по созданию плагинов, либо обратиться к специалисту.
У вас есть форма с разными input. У input есть "name" и "value". После нажатия на кнопку Submit ваша форма с данными улетела на сервер. В php проверяете $_REQUEST, там будут лежать ваши данные с именем "name" и значением "value". Дальше вы их пишете в базу и страница перезагружается. Ajax делает тоже самое, только без перезагрузки страницы.
Для передачи строки создайте дополнительное поле hidden. Если чекбокс нажат, добавляйте строку в "value", если нет, очищайте.
https://www.youtube.com/watch?v=a51CmL3omEA
https://www.youtube.com/watch?v=gJLnuO0j1ho
http://php.net/manual/ru/reserved.variables.request.php
https://wp-kama.ru/id_2018/ajax-v-wordpress.html
О спасибо! Буду пробовать!