Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
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ć (IMG:http://forum.php.pl/style_emoticons/default/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?
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) (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/party.gif)

pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.09.2025 - 10:50