Onclick non appelé sous IE

Eléphant du PHP | 139 Messages

23 août 2008, 23:27

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

Mammouth du PHP | 2937 Messages

24 août 2008, 00:48

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;

Eléphant du PHP | 139 Messages

24 août 2008, 01:05

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 ...

Eléphant du PHP | 139 Messages

25 août 2008, 11:14

J'ai trouvé la solution :)

Pour information, faut utiliser addEvent :)