Question

Ce n’est pas aussi simple qu’on pourrait le penser. J'utilise un plugin appelé jQuery MultiSelect et plusieurs < ; sélectionnez > options utilisant XSLT comme suit:

<xsl:for-each select="RootField">
  <select id="{RootField}" multiple="multiple" size="3">
    <option value=""></option>
    <xsl:for-each select="ChildField">
      <option value="{ChildField}"><xsl:value-of select="ChildField"/></option>
    </xsl:for-each>
  </select>
</xsl:for-each>

Le code JavaScript associé est le suivant:

var selects = document.getElementsByTagName("select");

$.each(selects, function() {
  $(this).multiSelect();
});

Cela me permet d’appliquer multiSelect (); fonction pour chaque < sélectionner > sur la page.

Le comportement est assez étrange, tous les autres < sélectionnez > est en cours de modification dans la liste déroulante (même les paires). Je ne vois rien de mal dans mon JavaScript pour provoquer ce problème, car cela reviendrait sur chacun d'entre eux. Pour que ce soit plus clair, seules les listes 2, 4, 6 et 8 (sur les 9 figurant sur la page) sont associées à JavaScript.

Des idées?

Était-ce utile?

La solution

Je n'avais jamais entendu l'étiquette «problème d'Halloween», mais Robert a peut-être raison.
La liste de noeuds renvoyée par getElementsByTagName est dynamique, c'est-à-dire que l'ajout ou la suppression, dans ce cas sélectionné, modifiera la liste de noeuds après sa création.

essayer

//hoping for magic here
$('select').multiSelect();

ou

$('select').each( function() {
    $(this).multiSelect();
});

Autres conseils

Cela ressemble à un problème lié à Halloween ( http: // blogs .msdn.com / mikechampion / archive / 2006/07/20 / 672208.aspx ) dans multiSelect, mais comme je ne connais pas multiSelect, je ne saurais le dire.

Essayez ceci:

jQuery('select').each(function(){selectAll(this.id)});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top