Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS][jquery] Obliczenia na polach input. Obsługa wpisu ,500 ?, Zamiana zapisu ,500 na 0,500
starterrrrr
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 7.01.2015

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


Witam.
Wykonałem prosty kalkulator pół typu input w jQuery.

Problemem jest to, że zwraca mi NaN gdy wpisze się ,500. Macie pomysł na fachową zamiane tego na 0,500. Myślałem, że parseFloat() załatwi sprawę.

Jak można jeszcze zabezpieczyć, często mam problem z poprawnymi obliczeniami na polach input.


  1. <script>
  2. //przeliczanie wpisanej wartości - wartosc x ilosc
  3. $( document ).on( "input", "#pole_ilosc", function() {
  4.  
  5. przelicz_sume_produktu( $(this).val() );
  6.  
  7. });
  8.  
  9. function przelicz_sume_produktu( element ) {
  10.  
  11. var ilosc = parseFloat( element );
  12. var cena = parseFloat( $("#pole_wartosc").val() );
  13.  
  14. var wynik = round(ilosc * cena, 2);
  15.  
  16. if (ilosc != 1) {
  17. //może dac warunbek, że if wynik=Nan wtedy info "Zła ilość"
  18. alert( wynik );
  19. }
  20.  
  21. }
  22.  
  23. function round(number,x) {
  24. var x = (!x ? 2 : x);
  25. return Math.round(number*Math.pow(10,x)) / Math.pow(10,x);
  26. }
  27.  
  28.  
  29. //zabezpieczenie pola ilosc i wartosc. przecinek na kropke i sprawdza czy nie ujemna wartosc. można by jeszcze to rozbudowac ododatkową walidacje np przypadku ,500 .
  30.  
  31. $( document ).on( "input", ".prod_ilosc", function() {
  32.  
  33. this.value=this.value.replace(',','.');
  34.  
  35. if($(this).val() < 0) {
  36. alert('Podaj wartość dodatnią.');
  37. $(this).val(0);
  38. }
  39.  
  40. });
  41. </script>


Ten post edytował starterrrrr 14.03.2018, 11:45:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


W linijce 32 możesz wstawić:
Kod
if (this.value.indexOf(',') === 0) {
   this.value = '0' + this.value;
}


@trueblue Dał lepsza odpowiedź, moją zignoruj

Ten post edytował markuz 14.03.2018, 12:07:18
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Kod
parseFloat(wartosc.replace(',' ,'.'))
Go to the top of the page
+Quote Post
starterrrrr
post
Post #4





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 7.01.2015

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


Cytat(trueblue @ 14.03.2018, 12:04:45 ) *
Kod
parseFloat(wartosc.replace(',' ,'.'))



W całym tym moim kodzie dane przechodzą przeztakie funkcje.
Linia 33 kasuje przecinki, linia 11 i 12 jest parse float.

parsefloat() nie zamieni zmienną .500 na 0.500
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Do obliczeń nie jest potrzebne 0, do prezentacji po prostu dodaj jeśli go brak.
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: 23.08.2025 - 23:05