Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] obliczanie z select nie działa w IE
harbii
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

Ostrzeżenie: (0%)
-----


Mam formularz, który liczy wartość pozycji. netto + VAT = brutto
VAT wybieram z pola typu select i niestety w IE nie działa. W FireFoxie jest ok Safari jest ok...
Jak zamienię selekt na text to działa ok.

Co zrobić aby IE brało pod uwagę wybraną opcje z select?

Ten post edytował harbii 2.01.2009, 01:23:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Rafal Filipek
post
Post #2





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

Ostrzeżenie: (0%)
-----


Wydaje mi się, że zaprezentowanie jakiegokolwiek kodu mogłoby nam trochę pomóc. No ale skoro nie ma nic to chyba mogę ci przedstawić taki kod:
Kod
var s = document.getElementById("select");
alert(s.options[s.selectedIndex].value);
Go to the top of the page
+Quote Post
harbii
post
Post #3





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

Ostrzeżenie: (0%)
-----


no nie działa chyba, albo źle tego użyłem.

mam taki kod który liczy:
  1. <script type="text/javascript">
  2.  
  3. function licz(aform){
  4. aform.ilosc1.value=aform.ilosc1.value.replace(',','.');
  5. aform.cenan1.value=aform.cenan1.value.replace(',','.');
  6. aform.rabat1.value=aform.rabat1.value.replace(',','.');
  7. aform.wartoscn1.value = zaokraglenie((parseFloat(aform.cenan1.value) - parseFloat(aform.cenan1.value) * parseFloat(aform.rabat1.value)/100) * parseFloat(aform.ilosc1.value))
  8.  
  9. }
  10. function zaokraglenie(wartoscn1) {
  11. wartoscn1 = wartoscn1 * 100;
  12. var wynik1 = Math.round(wartoscn1)/100;
  13. return wynik1;
  14. }
  15. function zaokraglenie(liczba) {
  16. liczba = liczba * 100;
  17. var wynik = String(Math.round(liczba)/100);
  18. return wynik;
  19. }
  20. <script type="text/javascript">
  21.  
  22. function liczv(aform){
  23. if (aform.vat1.value == 'ZW') {
  24. aform.kvat1.value = zaokraglenie(parseFloat(aform.wartoscn1.value) * 0);
  25. }
  26. else {aform.kvat1.value = zaokraglenie(parseFloat(aform.wartoscn1.value) * parseFloat(aform.vat1.value)/100);
  27. }
  28. }
  29. function zaokraglenie(kvat1) {
  30. kvat1 = kvat1 * 100;
  31. var wynik = Math.round(kvat1)/100;
  32. return wynik;
  33. }
  34. <script type="text/javascript">
  35.  
  36. function liczb(aform){
  37.  
  38. aform.wbrutto1.value = zaokraglenie(parseFloat(aform.wartoscn1.value) +
  39.  
  40. parseFloat(aform.kvat1.value));
  41. }
  42. function zaokraglenie(wbrutto1) {
  43. wbrutto1 = wbrutto1 * 100;
  44.  
  45. var wynik = Math.round(wbrutto1)/100;
  46. return wynik;
  47. }


i taki formularzyk:

  1. <input type="hidden" name="ptid" value="<?php echo $ptid ;?>">
  2.  
  3. <input type="text" maxlength="5" name="symbol1" size="4" value="<?php echo $tsymbolntid ;?>" onfocus="licz(xxx); liczv(xxx); liczb(xxx)">
  4. </td><td align="center" class="opisfvmb">
  5. <input type="text" maxlength="3" name="wyr1" size="3" value="" onfocus="licz(xxx); liczv(xxx); liczb(xxx)">
  6. </td><td align="center" class="opisfvmb">
  7. <input type="text" name="nazwa1" size="45" maxlength="36" value="<?php echo $tnazwantid ;?>" onfocus="licz(xxx); liczv(xxx); liczb(xxx)">
  8. </td><td class="opisfvmb" align="center">
  9. <input type="text" name="ilosc1" size="3" class="opisfvm" maxlength="6" onfocus="licz(xxx); liczv(xxx); liczb(xxx)" onKeyUp="licz(xxx); liczv(xxx); liczb(xxx)" value="">
  10. </td><td align="center" class="opisfvmb" >
  11. <input type="text" name="jm1" size="1" value="<?php echo $tjmntid ;?>" maxlength="4" onfocus="licz(xxx); liczv(xxx); liczb(xxx)">
  12. </td><td align="center" class="opisfvmb" >
  13. <input type="text" name="cenan1" size="10" class="opisfvm" maxlength="10" onfocus="licz(xxx); liczv(xxx); liczb(xxx)" onKeyUp="licz(xxx); liczv(xxx); liczb(xxx)" value="">
  14. </td><td align="center" class="opisfvmb">
  15. <input type="text" name="rabat1" size="10" class="opisfvm" maxlength="10" onfocus="licz(xxx); liczv(xxx); liczb(xxx)" onKeyUp="licz(xxx); liczv(xxx); liczb(xxx)" value="">
  16. </td><td align="center" class="opisfvmb">
  17. <input type="text" name="wartoscn1" size="14" class="opisfvm" onfocus="liczv(xxx); liczb(xxx)" readonly="readonly">
  18. </td><td align="center" class="opisfvmb" >
  19. <select name="vat1" size="1" class="opisfvm" onfocus="liczv(xxx); liczb(xxx)">
  20. <? $zapytanievat = "SELECT * FROM vat ";
  21. $wykonajvat = mysql_query($zapytanievat);
  22.  
  23. while($danevat = mysql_fetch_array($wykonajvat))
  24. {
  25. $tdanevatvat = $danevat['vat'];
  26. print '<option>'.$tdanevatvat.'</option>';
  27. }
  28. ?>
  29. </select>
  30. </td><td align="center" class="opisfvmb">
  31. <input type="text" name="kvat1" size="8" class="opisfvm" readonly="readonly">
  32. </td><td align="center" class="opisfvmb" >
  33. <input type="text" name="wbrutto1" size="16" class="opisfvm" readonly="readonly">
Go to the top of the page
+Quote Post
Rafal Filipek
post
Post #4





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

Ostrzeżenie: (0%)
-----


1) co to jest to 'xxx' jako argument funkcji ? Ani to string ani zmienna ...
2) gdzie w tym kodzie wykorzystujesz to co ci pokazalem ? widze ze masz 1 select'a i stosujesz na nim 2 funkcje ale zadna z nich nie wykorzystuje mojego kodu.
Go to the top of the page
+Quote Post
harbii
post
Post #5





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

Ostrzeżenie: (0%)
-----


1. xxx to nazwa form

  1. <form action="index.php" name="xxx" method="post">


2. no właśnienie nie wiem jak to wykorzystać wstydnis.gif
Go to the top of the page
+Quote Post
paziek
post
Post #6





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Tak się nie odwołuje do formularza, tak przynajmniej uważam. A, że FF/Safari to łykają, to już inna sprawa.

Nie mniej jednak
zamień
liczv(xxx);
na
liczv(this.form);

Powinno pomóc, aczkolwiek możliwe, że błąd masz gdzieś indziej. Powiedz co mówi IE - jakie błędy wywala.
Go to the top of the page
+Quote Post
harbii
post
Post #7





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

Ostrzeżenie: (0%)
-----


po tej zmianie to w IE bez zmian

temat nadal aktualny, w IE nie liczy może ktoś ma jeszce jakiś pomysł?
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A onchange zamiast onfocus?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
harbii
post
Post #9





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

Ostrzeżenie: (0%)
-----


nie pomaga

tak nic nie pokazuje
  1. function liczv(aform){
  2. var s = document.getElementById("select");
  3. alert(s.options[s.selectedIndex].value);
  4. if (aform.vat1.value == 'ZW') {
  5. aform.kvat1.value = zaokraglenie(parseFloat(aform.wartoscn1.value) * 0);
  6. }
  7. else {aform.kvat1.value = zaokraglenie(parseFloat(aform.wartoscn1.value) * parseFloat(aform.vat1.value)/100);
  8. }
  9. }

nawet NaN

Ten post edytował harbii 30.05.2009, 23:11:32
Go to the top of the page
+Quote Post
kamil4u
post
Post #10





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Jak Ty to robisz, że masz 3 funkcje "zaokraglenie"? (ta ostatnia wystarczy)

Naucz się debugować, czyli w tym przypadku powstawiaj sobie alerty i sprawdź gdzie się wysypuje błąd, jeszcze wcześniej sprawdź czy FF nie wywala żadnego błędu (konsola JS) smile.gif

Później miło by było gdybyś przeszedł na używanie funkcji nawigacyjnych DOM(czy jak to tam nazwać):
- getElementById
- getElementsByName
- getElementsByTagName

Co prawda i tak powinno działać tak jak to Ty zrobiłeś, ale powyższy sposób jest teraz swego rodzaju (niepisanym) standardem.

PS. Masz mało czytelny kod(HTML głównie)


--------------------
Go to the top of the page
+Quote Post
harbii
post
Post #11





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

Ostrzeżenie: (0%)
-----


ok. czasem sie poprawię z czytelnością ale póki co ma ktoś pomysł dlaczego nie liczy w IE?

ok. co by się inni nie męczyli tak jak ja smile.gif to powiem że wystarczyło dodać value w <option>

widocznie ff bierze sobie jak nie ma value z nazwy a ie nie

no cóż pół roki i rozwiązałem problem party.gif

pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 17:38