Witam, bawię się w modyfikowanie OSC i zawisłem nad zmianą ceny produktu po wyborze opcji modyfikującej cenę.

Opcje zapisywane są w SELECT OPTION i są generowane przez kod PHP.
W funkcji odpowiedzialnej za generowanie całego SELECT, przy każdym OPTION dodałem

onmouseover="changePrice('.$ptq_price_float.');"

Gdzie zmienna $ptq_price_float przekazuje o ile ma się podnieść cena (np. 20.10) która pobiera tą wartość z wyniku jaki podaje oryginalna pętla OSC.

echo '<select>';
for () {
// tutaj do wyników OPTION dopisuję swój kod JS.
}
echo'</select>';

funkcja javascript changePrice(value) może nie jest doskonała ale jest i działa w FF winksmiley.jpg
dodatkowo przechowuję oryginalną cenę żeby mi w koło nie sumowało przy każdej zmianie.

  1. <script type="text/javascript">
  2.  
  3. var oldprice = window.document.getElementById('cenajsptq').innerHTML;
  4.  
  5. function changePrice(add) {
  6.  
  7. var zmiana = parseFloat(add);
  8. var cena1 = oldprice;
  9. var tekst = new String(cena1);
  10. tekst1 = tekst.replace(/\,/g,'.');
  11.  
  12. if (tekst1.match('</s>')==null) {
  13. prev = tekst1.match(/[0-9]+.{1}[0-9]*/);
  14. var wynik = parseFloat(prev) + zmiana;
  15. wynik = wynik.toFixed(2);
  16. cena1 = tekst1.replace(prev, wynik);
  17. cena1 = cena1.replace('.',',');
  18. }else{
  19. tekst0 = tekst1.split('</s>');
  20.  
  21. prev1 = tekst0[0].match(/[0-9]+.{1}[0-9]*/);
  22. wynik1 = parseFloat(prev1) + zmiana;
  23. wynik1 = wynik1.toFixed(2);
  24. cena = tekst1.replace(prev1,wynik1);
  25.  
  26. prev2 = tekst0[1].match(/[0-9]+.{1}[0-9]*/);
  27. wynik2 = parseFloat(prev2) + zmiana;
  28. wynik2 = wynik2.toFixed(2);
  29. cena1 = cena.replace(prev2, wynik2);
  30.  
  31. cena1 = cena1.replace(/\./g,',');
  32. }
  33. window.document.getElementById('cenajsptq').innerHTML = cena1;
  34. }
  35.  
  36.  


Całość działa idealnie w FireFox, ale już w IE6 i Chrome nie działa...

Czytałem że te przeglądarki nie obsługują eventów w OPTION.


Proszę o poradę jak to napisać żeby działało także w tych przeglądarkach sad.gif

-------------------

do SELECT trzeba dodać:
onchange="changePrice(this.options[this.selectedIndex].title);"

A do każdego OPTION w TITLE wartość o ile ma się podnieść cena.


Nie sądziłem że to takie proste winksmiley.jpg