“TypeError: expr.replace is not a function” è un errore che può capitare abbastanza spesso se si usa Chosen sia come libreria javascript che come modulo all’interno di Drupal 7. Questo è dovuto al fatto che Chosen richiederebbe jQuery in una versione più recente della 1.6.1, mentre su Drupal 7 di default è installata la versione 1.4.4.Guardando in giro, la soluzione che viene generalmente indicata come migliore è quella di utilizzare una versione più recente di jQuery, utilizzando i moduli jQuery Update oppure il modulo jQuery Multi. D’altra parte, se si lavora su un sito esistente, il primo può causare il malfunzionamento di script esistenti, mentre il secondo appesantisce la pagina caricando più versioni di jQuery, che in generale causa confusione e diminuzione delle performance.

A me invece piace una soluzione molto più semplice, che può essere utilizzata in generale anche su siti non basati su Drupal.

All’interno del file chosen.js è sufficiente sostituire la riga:

if (this.container.is($(evt.target).closest('.chosen-container'))) {

con:

var chosenContainer = $(evt.target).closest('.chosen-container');

if (chosenContainer.size() > 0 && this.container[0] === chosenContainer[0]) {

in questo modo si rende chosen compatibile con la versione 1.4 di jQuery è non sono necessarie altre modifiche o aggiornamenti potenzialmente pericolosi.

Per il momento non ci sono post correlati.

Tags:

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>