I have a View with an exposed form . I am trying to a few things on it. Ideally I would like to have a dropdown that fires the form with no button. If that is not possible then I would like to have the button text something different than apply.
I hacked it for now and change views_form in views.module but that does not seem like the right way to do it. I only have one exposed form right now, but what if I add more?
Please see http://www.wiredvillage.ca/News for my example.
I am poking around drupal.org and seeing others with the same problem but no solutions so far. Not sure where the best place to get Drupal help is.
Here is the change I made so far:
function views_exposed_form(&$form_state) { // Make sure that we validate because this form might be submitted // multiple times per page. $form_state['must_validate'] = TRUE; $view = &$form_state['view']; $display = &$form_state['display']; $form_state['input'] = $view->get_exposed_input(); // Let form plugins know this is for exposed widgets. $form_state['exposed'] = TRUE; $form['#info'] = array(); if (!variable_get('clean_url', FALSE)) { $form['q'] = array( '#type' => 'hidden', '#value' => $view->get_url(), ); } // Go through each filter and let it generate its info. foreach ($view->filter as $id => $filter) { $view->filter[$id]->exposed_form($form, $form_state); if ($info = $view->filter[$id]->exposed_info()) { $form['#info']['filter-' . $id] = $info; } } // I CHANGED The VALUE OF THIS SUBMIT BUTTON TO GO $form['submit'] = array( '#name' => '', // prevent from showing up in $_GET. '#type' => 'submit', '#value' => t('go'), ); $form['#action'] = url($view->get_url()); $form['#theme'] = views_theme_functions('views_exposed_form', $view, $display); $form['#id'] = views_css_safe('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display->id)); // $form['#attributes']['class'] = array('views-exposed-form'); // If using AJAX, we need the form plugin. if ($view->use_ajax) { drupal_add_js('misc/jquery.form.js'); } views_add_js('dependent'); return $form; }
If you want the drop-down to fire, I’d use JavaScript instead of hacking the module as Eaton suggests.
Basically, you can modify the text with hook_form_alter as Eaton suggests, then use in the same hook_form_alter, add a call to drupal_add_js with your custom JS which hides the button and submits the form on the onChange handler of the select drop-down. You want that submit button there for those 10% of users for whom the JS fails.