[development] I am trying to use the hook_form_alter to change the option that is selected by default within a select pull-down when the page loads.

Ken Rickard agentrickard at gmail.com
Fri Mar 25 18:47:02 UTC 2011


If the field allows multiple select, #default_value must be an array.

On Fri, Mar 25, 2011 at 1:53 PM, John Mitchell <mitchelljj98 at gmail.com> wrote:
> I am trying to use the hook_form_alter to change the option that is selected
> by default within a select pull-down when the page loads.  I am able to
> adjust the order of the options before the page loads but changing the
> #default_value option does not change the actual selected option when the
> page loads.  Note function product_type_form_alter below:
>
> function product_type_form_alter(&$form, &$form_state, $form_id) {
>   if ($form_id == 'views_exposed_form') {
>     $form['term_node_tid_depth']['#default_value'] = 184;//this did not work
>     $form['term_node_tid_depth']['#options'] = Array(193 => "Alpena County",
> 184 => "Genesee County", 190 => "Montmorency County", 186 => "Oceana
> County", 204 => "Wabasha County", "All" => "<Any>");//this worked
>     $form['term_node_tid_depth']['#default_value'] = 184;//this did not work
>     dd($form['term_node_tid_depth']['#default_value']);//the outputted log
> value is correctly as 184 but when the page loads it uses the original
> default of "All"
>   }
> }
>
> If I instead include a javascript file within hook_form_alter (listed below)
> then I am able to change the actual selected option after the page loads and
> programmatically click the submit button to rerun the filter, but this is
> needless processing that causes the page to load twice.  How can I use the
> method above to change the actual selected option before the page loads?
>
> Thanks,
>
> John
>
> function product_type_form_alter(&$form, &$form_state, $form_id) {//this
> worked completely
>   if ($form_id == 'views_exposed_form') {
>     $term_node_tid_depth_get = $_GET['term_node_tid_depth'];
>     if (!isset($term_node_tid_depth_get)) {
>       drupal_add_js(drupal_get_path('module', 'product_type') .
> '/js/subscription_product_filter.js','module','footer');
>     }
>   }
>
> '/js/subscription_product_filter.js' contents below:
> jQuery("select#edit-term-node-tid-depth
> option[selected]").removeAttr("selected");
> jQuery("select#edit-term-node-tid-depth
> option[value='184']").attr("selected", "selected");
> $("#edit-submit-Subscription-Products").click();



-- 
Ken Rickard
agentrickard at gmail.com
http://ken.therickards.com


More information about the development mailing list