Как передать 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 таким условием как в вопросе, т.к. есть ещё много моментов связанных с подобным, не только с радиокнопками
Ну рас вы любитель извращений, тогда так:
/* JQUERY */ jQuery(function($){ $('.button').click(function(){ $(this).find('[type="radio"]:first').click(); }); });:):)
спасибо конечно, но таких способов кучу можно наваять. Вы наверное не поняли сути "Условия"
. Дело в том, что я хочу, чтобы 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
О
спасибо! Буду пробовать!