Page 1 sur 1

Onclick non appelé sous IE

Posté : 23 août 2008, 23:27
par Vurtu
Bonjour tout le monde,

J'ai un soucis avec IE 7 ...
J'ai codé un petit script à l'aide de mootools pour remplacer à la volée les select par un champ caché, et un "select personnalisé" afin de pouvoir appliquer des styles personnalisés sans contraintes.

Par contre, mon onclick ne fonctionne pas ...
je ne comprends pas. sous firefox c'est bon, mais pas IE

Si vous pouvez me donner un coup de main ...
Le tout est visible ici : http://muggle-cms.org/select/

Merci d'avance

Posté : 24 août 2008, 00:48
par Victor BRITO
Ce serait mieux si tu indiquais le code JavaScript que tu as pondu.

Si jamais tu as employé la méthode addEventListener (), sache qu'elle n'est pas comprise par IE 7 et versions antérieures ; pour IE, tu as la méthode attachEvent (), qui est semblable à la première, à ceci près qu'elle ne permet pas de gérer la propagation d'événement.

Autrement dit :

Code : Tout sélectionner

function taFonction () { // ... } // Ajout d'un événement (exemple) var tonElement = document.getElementById ('id-de-l-element-recevant-l-evenement'); if (tonElement.addEventListener) tonElement.addEventListener ('click', taFonction, false); else if (tonElement.attachEvent) tonElement.attachEvent ('onclick", taFonction); /* l'else qui suit peut être omis, la plupart des navigateurs courants comprenant l'une des deux méthodes ci-dessus */ else tonElement.onclick = taFonction;

Posté : 24 août 2008, 01:05
par Vurtu
Pour information, voici le code :

Code : Tout sélectionner

var personnalSelectOpenned = false; function replaceSelect() { var selectNum = 0; document.getElements('select').each(function(item, index) { parentNode = item.getParent(); // hidden input for sending hidden = new Element('input', { 'type': 'hidden', 'name': item.name, 'id': 'personnalSelectValue' + selectNum, 'value': item.value }); // list with dl, dt, dd, ul, li dl = new Element('dl', { 'class': 'select' }); dt = new Element('dt', { 'id': 'personnalSelectTitle'+ selectNum, 'onclick': 'personnalSelectShow('+ selectNum +'); return false;' }); dt.appendText(item.options[item.selectedIndex].text + " "); dd = new Element('dd', { 'id': 'personnalSelect' + selectNum }); ul = new Element('ul'); item.getElements('option').each(function(option, index) { li = new Element('li', { 'onclick': 'personnalSelectSetValue(this, '+ selectNum +', "'+ option.value +'");' }); li.appendText(option.text + ' '); ul.grab(li); }); dd.grab(ul); dl.grab(dt); dl.grab(dd); item.destroy(); parentNode.grab(hidden); parentNode.grab(dl); ++ selectNum; }); } function personnalSelectShow(id) { if ( personnalSelectOpenned ) personnalSelectShow(personnalSelectOpenned); id = 'personnalSelect' + id; if ( $(id).getStyle('display') == 'none' ) { $(id).setStyle('display', 'block'); personnalSelectOpenned = id; } else { $(id).setStyle('display', 'none'); personnalSelectOpenned = false; } } function personnalSelectSetValue(li, id, value) { $('personnalSelectTitle'+ id).innerHTML = li.innerHTML; $('personnalSelectValue'+ id).value = value; personnalSelectShow(id); } window.addEvent('domready', function() { replaceSelect(); });

Ca se passe à la création du dt ...

Code : Tout sélectionner

'onclick': 'personnalSelectShow('+ selectNum +'); return false;'
J'ai essayé différente méthodes, rien n'y fait ...

Je voulais essayer ta méthode, mais je n'ai pas compris comment passer les arguments à ma fonction ...

Posté : 25 août 2008, 11:14
par Vurtu
J'ai trouvé la solution :)

Pour information, faut utiliser addEvent :)