I've got a view with a single exposed filter (a select). It's using ajax to re-populate when the user clicks "Apply". I'd like them not to have to click that and just re-populate when the select is changed. I'm assuming I'm going to need some JS more or less like this (though this doesn't quite seem to be working):
$('#edit-tid').change(function(){
$('#views-exposed-form-MYVIEW-page-1').submit();
});
First, I would think that would do it, but it's not getting submitted. Anyone know why?
Second, what's the best way to inject that code? I'm thinking of using the View footer because it's easy, but any other better ideas?
UPDATE: The above code is working (injected via the views footer), but only the first time. I guess the select is getting overwritten by the ajax call, but the behavior isn't getting reattached (or something). Hmm...
UPDATE #2: For simplicity's sake, I'm gonna ditch the ajax.
The Content Management Filter is a contributed module that adds an easier way for administrators to filter the content on a Drupal site for administration purposes.
Overview: Exposed Filter Criteria in Views for Drupal 8, Drupal 9. Exposing filter criteria allows the users of your site to choose how to filter a content list created in Views. When rendered on the page, the exposed filters will be displayed to the user as interactive form components.
The Filter core module allows you to configure text formats for processing text input for your site. These settings are under Configuration > Content authoring > "Text formats and editors" ( /admin/config/content/formats ).
In order to have this code re-attached after the ajax call, it should initially be attached via Drupal.behaviors. Something like this:
Drupal.behaviors.myCustomModule = function(context) {
$('#edit-tid', context).change(function(){
$('#views-exposed-form-MYVIEW-page-1').submit();
});
}
Note that the context argument is passed into the selector. Drupal.behaviors should get called again on the new content loaded via ajax.
Update: I didn't notice you were inserting the js via the views footer. The above should still work, just replace 'myCustomModule' with some unique identifier so you don't override other behaviors.
I think this feature works out of the box (at least in Drupal 7). Edit your view and under Exposed form choose
Exposed form style -> Settings
Then there is an option
Autosubmit
where you can choose if you want to "Automatically submit the form once an element is changed". There is also the possibility to use the option
Hide submit button
which is explained by "Hide submit button if javascript is enabled".
@pradeep: you could insert it into a themed view template (see http://www.group42.ca/theming_views_2_the_basics) of your view. (sorry, could not write this as comment according to the forum ui)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With