Drupal> viste> Filtro esposto> presentare sul cambiamento
-
18-09-2019 - |
Domanda
Ho una vista con un unico filtro esposto (una selezione). E 'utilizzando AJAX per ripopolare quando l'utente fa clic su "Applica". Mi piacerebbe loro di non devono fare clic su tale e proprio ripopolare quando il Select è cambiato. Sto assumendo che ho intenzione di bisogno di JS più o meno così (anche se questo non abbastanza sembra funzionare):
$('#edit-tid').change(function(){
$('#views-exposed-form-MYVIEW-page-1').submit();
});
In primo luogo, potrebbe pensare che avrebbe fatto, ma non è sempre presentato. Qualcuno sa perché?
In secondo luogo, qual è il modo migliore per iniettare il codice? Sto pensando di usare la vista piè di pagina, perché è facile, ma altre idee migliori?
UPDATE: Il codice precedente è di lavoro (iniettata tramite la vista piè) ma solo la prima volta. Credo che il SELECT è sovrascritte dalla chiamata ajax, ma il comportamento non è sempre riattaccato (o qualcosa del genere). Hmm ...
UPDATE # 2:. Per semplicità, sto andando fosso l'Ajax
Soluzione
Per avere questo codice nuovamente attaccati dopo la chiamata ajax, dovrebbe essere inizialmente fissata tramite Drupal.behaviors. Qualcosa di simile a questo:
Drupal.behaviors.myCustomModule = function(context) {
$('#edit-tid', context).change(function(){
$('#views-exposed-form-MYVIEW-page-1').submit();
});
}
Si noti che l'argomento contesto viene passato nel selettore. Drupal.behaviors dovrebbero avere chiamato sul nuovo contenuto caricato tramite la tecnologia AJAX.
Aggiorna : Non ho notato che stavi inserendo il js tramite la vista piè di pagina. Quanto sopra dovrebbe ancora funzionare, basta sostituire 'myCustomModule' con un po 'identificatore univoco in modo da non ignorare altri comportamenti.
Altri suggerimenti
Credo che questa caratteristica funziona out of the box (almeno in Drupal 7). Modificare la vista e sotto forma Exposed scegliere
Exposed form style -> Settings
Poi c'è un'opzione
Autosubmit
dove è possibile scegliere se si vuole "inviare automaticamente il modulo una volta che un elemento è cambiato". V'è anche la possibilità di utilizzare l'opzione
Hide submit button
che si spiega con "Nascondi pulsante di invio se javascript è abilitato".
@pradeep: si potrebbe inserire in un modello di vista a tema (vedi http://www.group42.ca/ theming_views_2_the_basics ) della vostra vista. (Mi dispiace, non poteva scrivere questo come commento secondo il ui forum)
Se avete bisogno di AJAX per lavorare quando si cambia un selezionare l'opzione nella vista esposto
Drupal.behaviors.myCustomModule = {
attach: function (context, settings) {
$('select[data-drupal-selector="edit-YOUR-FIELD"]', context).change(function(){
$('#views-exposed-form-YOUR-VIEW-block-1 input.form-submit').trigger('click');
});
}
};