This post is an extension of Gravity Forms – Collecting Select Box Value.
In this demo we are capturing the values from a group of checkboxes.
Demo with Checkboxes
/** * Wrap our JS for capturing values */ var checkboxHandler = { //Change these IDs to match your form checkboxFieldId: 'input_5_3', //checkbox container ID outputFieldId: 'input_5_2', //hidden field to capture values checkboxField: null, outputField: null, /* Listen to Checkboxes ---------------------- */ init: function() { this.outputField = document.getElementById(this.outputFieldId); if( typeof this.outputField === 'undefined' || !this.outputField ) { console.error('Missing output field ' + this.outputFieldId); return; } this.checkboxField = document.getElementById(this.checkboxFieldId); if(typeof this.checkboxField === 'undefined' || !this.checkboxField) { console.error('Missing checkbox field ' + this.checkboxFieldId); return; } jQuery(this.checkboxField).on( 'change', 'input[type=checkbox]', { checkbox: this.checkboxField, output: this.outputField }, this.setValues ); }, /* Set text (or hidden) field to list of checkbox values ----------------------------------- */ setValues: function(ev) { var fields = ev.data; var valueString = ''; jQuery(fields.checkbox).find('input:checked').each( function(i){ valueString += this.value + ', '; }); fields.output.value = valueString.replace(/, $/, ''); } }; jQuery().ready( checkboxHandler.init() );
If you are using a child theme or custom theme you can add this code to its JavaScript file.
Otherwise use WordPress’ wp_register_script and wp_enqueue_script functions to load a new file.
The value of the hidden/text box can then be included in your Gravity Forms notification.
hi many thanks for your post is very interesting. How can I pass the checkbox value and record it as new value for the other fiedl?
Thanks. I’m not sure what you mean by a new value for the other field? What sort of other field do you want to send the value to?
Hi thanks for your answer, what i’m trying to do is implement gravity forms with mycred plugin.
Basically i’m using gravity form hook prebuilt addon for mycred.
I can change the field label to mycred_amount and then if i set up a manual default value it will add or remove points when the form is submitted.
What i’m trying to achieve is setting up the default value in the mycred_amount hidden field based on what the user choices are on the checkbox field.
I’ve tried your snippet and it works fine, like in your demo it does show the checkbox value inside the mycred_amount field but when i submit the form points are not added or removed.
I’ve also tried to edit your snippet replacing fields.output.value = valueString.replace(/, $/, ”); with fields.output.defaultValue = valueString.replace(/, $/, ”);
but still no success 🙁 i’m wondering if you could help me. Many thanks
Hi is it possible to collect the label text instead?
It’s possible, but the simplest way would just be to set the input values to be the same as the label.
Is there a reason you cannot set them that way?
Hi thanks for your answer. I need to set the value to a number because it will be used with mycred plugin to credits for each option the user will choose, but I also need to collect and pass to another field the description text of each checkbox checked. Many thanks for your help
Hey, try this Francesco.
Use my code above, but replace the setValues method with this version. It finds the corresponding label and uses its innerText value.
Hi you are a star, many thanks, is there any way i can use both? I mean with one javascript code passing the value of check box to a field and the label to another field?
Many thanks and happy christmas
Thanks. Yes that’s all possible. If you compare my original code in the blog post, and the modified version in my comment above you should see the selector and DOM access code that captures those values and puts them somewhere. You can modify that to update a different field. You’d need that field’s ID to be able to select and update it.
If you need specific help with your situation you could hire me to customize the script further.