I'm building a site in WordPress that uses the donation plugin Charitable. On the donation page, there are two sections with two sets of radio buttons for donation values. The plugin does not have a feature that I want to include, and they will not support the feature that I am trying to build.
I want to display some content when a user selects a donation amount. I've been trying to use Code Snippets, which is a separate plugin supported by Charitable, but I've only made limited progress. My limited coding knowledge is holding me back.
I have two code snippets: one in PHP and one in JavaScript. The PHP snippet adds the custom content in the desired location, and the JavaScript snippet controls which div is displayed when a radio button (donation amount) is clicked.
My problem is that when I click a donation amount, it only displays the content in the single donation HTML section, but not in the recurring donation HTML section. I've tried targeting the radio buttons in other ways, but I'm falling short.
PHP snippet
add_action('charitable_donation_form_after_donation_amounts', 'add_custom_content');
function add_custom_content(){
echo '<div class="sgl-content sgl5 once">Single £5 is selected</div>
<div class="sgl-content sgl10 once">Single £10 is selected</div>
<div class="sgl-content sgl25 once">Single £25 is selected</div>
<div class="sgl-content sgl50 once">Single £50 is selected</div>
<div class="sgl-content sglcustom once">Single Custom amount is selected</div>';
}
add_action('charitable_recurring_donation_form_after_donation_amounts', 'add_custom_content_rec');
function add_custom_content_rec() {
echo '<div class="rec-content rec5 month">Recurring £5 is selected</div>
<div class="rec-content rec10 month">Recurring £10 is selected</div>
<div class="rec-content rec25 month">Recurring £25 is selected</div>
<div class="rec-content recrecurring-custom month">Recurring Custom amount is selected</div>';
}
jQuery(function($) {
var sglAmountSection = document.getElementsByName('donation_amount');
for (var i = 0; i < sglAmountSection.length; i++) {
sglAmountSection[i].onclick = function() {
$(".sgl-content").css('display', 'none'); // Hide all sgl divs
$(".sgl" + this.value).css('display', 'block'); // Show the selected div
}
}
});
jQuery(function($) {
var recAmountSection = document.getElementsByName('donation_amount');
for (var i = 0; i < recAmountSection.length; i++) {
recAmountSection[i].onclick = function() {
$(".rec-content").css('display', 'none'); // Hide all rec divs
$(".rec" + this.value).css('display', 'block'); // Show the selected div
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<fieldset class="charitable-fieldset odd">
<p class="minimum-donation-amount-text">The minimum donation for this campaign is £5.</p>
<div class="charitable-form-header">Your Donation</div>
<div id="charitable-donation-options-693037511dbd3">
<ul class="recurring-donation recurring-donation-options">
<li class="one-time-donation recurring-donation-option">
<label for="recurring-form-693037511dbd3-once">
<input id="recurring-form-693037511dbd3-once" type="radio" data-form_id="693037511dbd3" name="recurring_donation" value="once" checked="checked" class="selected">One Time</label>
</li>
<li class="monthly-donation recurring-donation-option selected">
<label for="recurring-form-693037511dbd3-recurring">
<input id="recurring-form-693037511dbd3-recurring" type="radio" data-form_id="693037511dbd3" name="recurring_donation" value="month">Monthly</label>
</li>
</ul>
<div class="charitable-donation-options charitable-recurring-donation-options active" style="">
<noscript>
<div class="charitable-form-subheader">Your monthly Donation</div>
</noscript>
<ul class="recurring-donation-amounts donation-amounts">
<li class="donation-amount suggested-donation-amount">
<label for="recurring-form-693037511dbd3-field-5">
<input id="recurring-form-693037511dbd3-field-5" type="radio" name="donation_amount" data-recurring="true" data-value="5" value="5">
<span class="amount">£5 <span class="recurring-details"> / month</span></span> <span class="description"></span>
</label>
</li>
<li class="donation-amount suggested-donation-amount">
<label for="recurring-form-693037511dbd3-field-10">
<input id="recurring-form-693037511dbd3-field-10" type="radio" name="donation_amount" data-recurring="true" data-value="10" value="10">
<span class="amount">£10 <span class="recurring-details"> / month</span></span> <span class="description"></span>
</label>
</li>
<li class="donation-amount suggested-donation-amount">
<label for="recurring-form-693037511dbd3-field-25">
<input id="recurring-form-693037511dbd3-field-25" type="radio" name="donation_amount" data-recurring="true" data-value="25" value="25">
<span class="amount">£25 <span class="recurring-details"> / month</span></span> <span class="description"></span>
</label>
</li>
<li class="donation-amount custom-donation-amount">
<span class="custom-donation-amount-wrapper">
<label for="recurring-form-693037511dbd3-field-custom-recurring-amount">
<input id="recurring-form-693037511dbd3-field-custom-recurring-amount" type="radio" name="donation_amount" value="recurring-custom">
<span class="description">Custom amount</span>
</label>
<input type="text" class="custom-donation-input" name="custom_recurring_donation_amount" value="">
</span>
</li>
</ul>
<!-- .donation-amounts -->
<div class="rec-content rec5 month" style="display: block;">Recurring £5 is selected</div>
<div class="rec-content rec10 month" style="display: none;">Recurring £10 is selected</div>
<div class="rec-content rec25 month" style="display: none;">Recurring £25 is selected</div>
<div class="rec-content recrecurring-custom month" style="display: none;">Recurring Custom amount is selected</div>
</div>
<!-- .charitable-donation-options -->
<div class="charitable-donation-options" style="display: none;">
<noscript>
<div class="charitable-form-subheader show-if-no-js">Your One-Time Donation</div>
</noscript>
<ul class="donation-amounts has-suggested-amounts donation-amounts-count-4">
<li class="donation-amount suggested-donation-amount selected">
<label for="form-693037511dbd3-field-5">
<input id="form-693037511dbd3-field-5" type="radio" name="donation_amount" value="5">
<span class="amount">£5</span> <span class="description"></span>
</label>
</li>
<li class="donation-amount suggested-donation-amount">
<label for="form-693037511dbd3-field-10">
<input id="form-693037511dbd3-field-10" type="radio" name="donation_amount" value="10">
<span class="amount">£10</span> <span class="description"></span>
</label>
</li>
<li class="donation-amount suggested-donation-amount">
<label for="form-693037511dbd3-field-25">
<input id="form-693037511dbd3-field-25" type="radio" name="donation_amount" value="25">
<span class="amount">£25</span> <span class="description"></span>
</label>
</li>
<li class="donation-amount suggested-donation-amount">
<label for="form-693037511dbd3-field-50">
<input id="form-693037511dbd3-field-50" type="radio" name="donation_amount" value="50">
<span class="amount">£50</span> <span class="description"></span>
</label>
</li>
</ul>
<ul class="donation-amounts donation-suggested-amount">
<li class="donation-amount custom-donation-amount">
<span class="custom-donation-amount-wrapper">
<label for="form-693037511dbd3-field-custom-amount">
<input id="form-693037511dbd3-field-custom-amount" type="radio" name="donation_amount" value="custom"><span class="description">Custom amount</span>
</label>
<input type="text" class="custom-donation-input" name="custom_donation_amount" placeholder="Enter donation amount" value="">
</span>
</li>
</ul>
<!-- .donation-amounts -->
<div class="sgl-content sgl5 once" style="display: block;">Single £5 is selected</div>
<div class="sgl-content sgl10 once" style="display: none;">Single £10 is selected</div>
<div class="sgl-content sgl25 once" style="display: none;">Single £25 is selected</div>
<div class="sgl-content sgl50 once" style="display: none;">Single £50 is selected</div>
<div class="sgl-content sglcustom once" style="display: none;">Single Custom amount is selected</div>
</div>
<!-- .charitable-donation-options -->
</div>
<!-- charitable-donation-options-693037511dbd3 -->
</fieldset>