diff --git a/better_exposed_filters.js b/better_exposed_filters.js index 17a4271..234e8fb 100644 --- a/better_exposed_filters.js +++ b/better_exposed_filters.js @@ -246,6 +246,33 @@ } }; + // This is only needed to provide ajax functionality + Drupal.behaviors.better_exposed_filters_select_as_links = { + attach: function(context) { + + $('.bef-select-as-links', context).once(function() { + var $widgets = $('.views-exposed-widgets'); + // Hide the actual form elements from the user. + $widgets.find('.bef-select-as-links select').hide(); + var $options = $('.bef-select-as-links select option'); + $(this).find('a').click(function(event) { + // We have to prevent the page load triggered by the links. + event.preventDefault(); + event.stopPropagation(); + var text = $(this).text(); + // Set the corresponding option inside the select element + $options.filter(function() { + return $(this).text() == text; + }).attr('selected', true); + $('.bef-new-value').val($options.filter(':selected').val()); + + // Submit the form. + $widgets.find('.views-submit-button input').click(); + }); + }); + } + }; + /* * Helper functions */ diff --git a/better_exposed_filters.theme b/better_exposed_filters.theme index 8b59d99..30aec11 100644 --- a/better_exposed_filters.theme +++ b/better_exposed_filters.theme @@ -559,14 +559,15 @@ function theme_select_as_links($vars) { $output = ''; diff --git a/better_exposed_filters_exposed_form_plugin.inc b/better_exposed_filters_exposed_form_plugin.inc index ecc865a..f718a5f 100644 --- a/better_exposed_filters_exposed_form_plugin.inc +++ b/better_exposed_filters_exposed_form_plugin.inc @@ -1046,6 +1046,7 @@ Title Desc|Z -> A Leave the replacement value blank to remove an option al case 'bef_links': $show_apply = TRUE; + $form['#attached']['js'][] = drupal_get_path('module', 'better_exposed_filters') . '/better_exposed_filters.js'; $form[$field_id]['#theme'] = 'select_as_links'; // Exposed form displayed as blocks can appear on pages other than