If you looked for how to make a Gravity Forms field disabled/read-only you probably found the official article from their documentation. They suggest using a piece of JavaScript added to the “gform_pre_render” action, it looks like this:
add_filter('gform_pre_render_1', 'add_readonly_script'); function add_readonly_script($form){ ?> <script type="text/javascript"> jQuery(document).ready(function(){ jQuery("li.gf_readonly input").attr("readonly","readonly"); }); </script> <?php return $form; }
That suggestion is good if you work with simple text inputs ( or swapping that input to textarea ) but for select/drop-down it’s a bit more complicated, especially the ones that use the Chosen JavaScript library.
Including all form elements
I wanted to include all form elements so I used the “:input” jQuery selector which includes all form elements.
Next I wanted to also disable select elements that use the Chosen library – so I added trigger, so the call looks like this:
jQuery(function($){ jQuery('.mgf_disabled :input').prop('disabled', true).trigger("chosen:updated"); });
The looks
You probably noticed I made the fields disabled instead of “read-only” and that’s because by default the browsers don’t display the fields differently when they are marked as “read-only”, and I didn’t want to add any custom css. You can just skip this part and use read-only if you add some styles to that using the :read-only selector:
input:-moz-read-only { /* For Firefox */ background-color: yellow; } input:read-only { background-color: yellow; }
If you decide to use disabled – you probably know that those fields get ignored when submitting the form so the solution is to remove that attribute on the submit action. The final code looks like this:
jQuery(function($){ jQuery('.mgf_disabled :input').prop('disabled', true).trigger("chosen:updated"); jQuery('.gform_wrapper form').submit(function() { jQuery('.mgf_disabled :input').prop('disabled', false); }); });