Intereting Posts
Есть ли способ измерить использование ресурсов сервера (CPU) плагинами WP? Простой способ обработки результатов поиска перед отображением Как связать файл CSS только с отдельными сообщениями? Санирование данных поиска для использования с WP_Query Добавить пользовательский цвет текста WordPress 3.9 TinyMCE 4 Визуальный редактор Разметка страницы не работает на странице пользовательских сообщений проблема с has_post_thumpnail в цикле foreach Удалить категорию slug из ссылки Лучший способ отображения сообщений из определенных категорий, в виде сетки Как создать шаблон страницы с помощью WordPress 3 Как добавить пользовательский контент в пользовательскую таксономию Есть ли способ разделить сайт внутри сети (multisite) на свой собственный сайт wp? Как вы запрашиваете сообщения, в которых нет ничего общего? можно ли перемещать базу данных и папку мультимедиа на другой диск? Ссылка категории перенаправляется на страницу настраиваемого шаблона вместо index.php?

Отображение метабокса через JQuery Checkbox

Я обманывал себя как с JQuery, так и с PHP, и я пытаюсь настроить сайт для спортивной команды. Я создал настраиваемый тип сообщений под названием «Матчи», и там я создал два пользовательских мета-поля. Один для деталей матча (домашняя и гостевая команда IE) и одна для статистики матча (цели, кадры и т. Д.). В настоящее время у меня есть флажок (Is This Game Complete), который показывает / скрывает параметры статистики (которые находятся в Div #meta_box_stats) в Подробности метаданных (#dw_match_details).

Значение данных флажка сохраняется, но оно работает неправильно. Если он установлен как завершенный при загрузке для редактирования, и для значения установлено значение «включено», он все равно не покажет метатег статистики при попытке отредактировать сообщение, я должен щелкнуть его и снова щелкнуть по нему. Вот мой код (как можно более краткий, потому что это происходит много).

Это работает, поскольку я проверил var_dump при проверке, и он изменяется соответственно на включение или выключение, и либо показывает чек, либо нет.

Я хочу, чтобы статистика была скрыта до тех пор, пока не будет введена игра. После того, как он был введен и проверен как полный, он всегда должен показывать, когда вы редактируете страницу … Я просто не могу понять, почему это не так.

Вот мой сценарий

<script type="text/javascript"> jQuery(document).ready(function($) { $("#dw_match_stats").hide(); $('#dw_match_details').on('change', '#dw_complete', function() { played = $(this).prop('checked'); if (played) { $('#dw_match_stats').show(); } else { $('#dw_match_stats').hide(); } }); $('#dw_match_stats').change(); }); </script> 

Как упоминалось, значение пользовательских данных «dw_complete» сохраняется и изменяется должным образом.

EDIT: Вот некоторые из оставшегося кода. Я создал два мета-поля, один из которых называется #dw_match_details, у которого есть выбор команды и флажок, завершена ли игра.

 <div id="dw_match_details" class="postbox "> <div class="handlediv" title="Click to toggle"><br></div><h3 class="hndle"><span>Match Details</span></h3> <div class="inside"> <?php $values = get_post_custom( $post->ID ); $check = $values['dw_complete'][0]; ?> <input type="checkbox" id="dw_complete" name="dw_complete" <?php checked( $check, 'on', true ); ?> /> <label for="dw_complete">Is This Game Complete?</label> 

Тогда у меня есть статистика метаболизма.

 <div id="dw_match_display" class="postbox"> <div class="inside"> <div id="dw_game_stats" class="tabs-panel"> <div width="50%" style="float:left;margin-right:10%;"> <strong>Goals Per Period:</strong> <table> <thead> <tr> <th>&nbsp;</th> <th>1st</th> <th>2nd</th> <th>3rd</th> <th>OT</th> <th>Total</th> </tr> </thead> </table> </div> 

В этом суть, я, очевидно, имею больше информации для раздела статистики, но думаю, что это должно быть неуместно. Если вам нужно, чтобы я опубликовал сообщение, которое я могу или я положил в PasteBin. Прежде чем я забуду, вот два вызова для создания мета-боксов.

 function dw_custom_meta_boxes_match() { add_meta_box( 'dw_match_details', 'Match Details', 'dw_match_details', 'dw_match', 'normal', 'high' ); add_meta_box('dw_match_display', 'Match Statistics', 'dw_match_display', 'dw_match', 'normal', 'low' ); 

Solutions Collecting From Web of "Отображение метабокса через JQuery Checkbox"

Нашел решение, хотя, довольно просто

 <script type="text/javascript"> jQuery(document).ready(function($) { var dw_match_display = $('#dw_match_display'); dw_match_display.hide(); if ($('#dw_complete').prop('checked') ) { dw_match_display.show(); } $( '#dw_match_details' ).on( 'change', '#dw_complete', function() { dw_match_display.hide(); if ( $(this).prop('checked') ) { dw_match_display.show(); } }); }); jQuery(document).ready(function($) { $( '#dw_match_display' ).change(); }); </script> 

Я упростил ваш код, удалив материал WordPress и удалив часть вашей разметки. Я обнаружил, что все еще не запускал событие change пока не сделал это так:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Testing jQuery</title> <script type='text/javascript' src="http://code.jquery.com/jquery-1.9.1.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { $( '#dw_match_display' ).on( 'change', '#dw_complete', function() { $( '#dw_match_details' ).hide(); // These 2 lines should be removed in production. var change_status = $(this).prop('checked') ? 'shown' : 'hidden'; alert( "In Change Event\n\n Match Display will be " + change_status + '.' ); if ( $(this).prop('checked') ) { $( '#dw_match_details' ).show(); } }); }); jQuery(document).ready(function($) { $( '#dw_complete' ).change(); }); </script> </head> <body> <div id="dw_match_display" class="postbox "> <input type="checkbox" id="dw_complete" name="dw_complete" checked="checked" /> <label for="dw_complete"> Show Match Details</label> <div id="dw_match_details" class="postbox"> [This data should be seen when the page loads.] </div><!-- end #dw_match_details --> </div><!-- end #dw_match_display --> </body> </html> 

Я добавил окно предупреждения, чтобы вы могли видеть, что событие change запускается при загрузке страницы. Я не знаю, почему работает второй вызов jQuery(document).ready . Я только пробовал это на жаворонке. 🙂

Это проверяет страницу, когда установлен флажок. Чтобы проверить страницу, когда флажок не установлен, измените эту строку:

 <input type="checkbox" id="dw_complete" name="dw_complete" checked="checked" /> 

К этому:

 <input type="checkbox" id="dw_complete" name="dw_complete" /> 

Итак, попробуйте изменить код jQuery на это:

 jQuery(document).ready(function($) { $('#dw_match_details').on('change', '#dw_complete', function() { played = $(this).prop('checked'); if (played) { $('#dw_match_stats').show(); } else { $('#dw_match_stats').hide(); } }); }); jQuery(document).ready(function($) { $('#dw_match_stats').change(); });