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

È stato utile?

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');
    });
}

};

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top