Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] liczenie cen 1 doba za 50zł następna za 40zł
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Lejto
Mam taki system jak na stronie http://www.hotelgorski.com/rezerwacja.html główny kod mieści się w pliku cena.js kod podlicza cenę z pól input. Potrzebuje zrobić tak aby cena za 1 dobę wynosiła 50zł a za każdą następną 40zł, jak to zrobić?

myślałem o tej funkcji:
  1. function obliczCene(){
  2. wczytajDane();
  3. cena = ((room1 * 40) + (room2 * 40) + (room3 * 40) + (room4 * 40) + (room5 * 40)) * iloscDni;
  4.  
  5. $("#cena_do_zaplaty").text(cena);
  6. $("#naleznosc").val(cena);
  7. }

albo
  1. function obliczIloscDni(){
  2. from = $("#booking_date_from").val();
  3. to = $("#booking_date_to").val();
  4.  
  5. from = from.match(/^(\d{4,4})-(\d{2,2})-(\d{2,2})$/);
  6. to = to.match(/^(\d{4,4})-(\d{2,2})-(\d{2,2})$/);
  7.  
  8. var date1 = new Date(from[1], from[2]-1, from[3]);
  9. var date2 = new Date(to[1], to[2]-1, to[3]);
  10.  
  11. var minutes = 1000*60;
  12. var hours = minutes*60;
  13. var days = hours*24;
  14.  
  15. var diff = Math.abs(date1.getTime() - date2.getTime());
  16.  
  17. iloscDni = Math.round(diff / days);
  18. obliczCene();
  19. }
  20.  

Pozdrawiam
skowron-line
Może jest jeszcze wcześnie ale ten kod wydaje mi się pokręcony.
[JAVASCRIPT] pobierz, plaintext
  1. var pierwsza_doba = 50;
  2. var druga_doba = 40;
  3.  
  4. var ilosc_dni = 3;
  5.  
  6. if(ilosc_dni > 1)
  7. {
  8. cena = (ilosc_dni - 1) * druga_doba + pierwsza_doba
  9. }
  10. else
  11. {
  12. cena = pierwsza_doba
  13. }
[JAVASCRIPT] pobierz, plaintext
Lejto
ok, ale jak to wkomponować w to:
  1. cena = ((room1 * 40) + (room2 * 40) + (room3 * 40)) * iloscDni;

room1 itp to jest pole gdzie użytkownik wybiera
skowron-line
W pętli odczytujesz sobie inputy i wstawiasz ten warunek który podałem.
Lejto
próbowałem już tak ale nie chodzi dobrze, gdzie umieścić room1 i resztę?

trochę chyba to dziwne bo na początku kodu jest iloscDni = 1; dla tego chyba nie działało, nie wiem, ale jak zmieniłem na 0 to już w ogóle
  1. $(document).ready(function(){
  2. var cena = 0;
  3. var room1 = $("#booking_numRooms1").val();
  4. var room2 = $("#booking_numRooms2").val();
  5. var room3 = $("#booking_numRooms3").val();
  6. var room4 = $("#booking_numRooms4").val();
  7. var room5 = $("#booking_numRooms5").val();
  8. var room6 = $("#booking_numRooms6").val();
  9. var roomap = $("#booking_numRoomsAp").val();
  10. var iloscDni = 1;
  11.  
  12. $("#booking_numRooms1").change(function () {
  13. obliczCene();
  14. });
  15.  
  16. $("#booking_numRooms2").change(function () {
  17. obliczCene();
  18. });
  19.  
  20. $("#booking_numRooms3").change(function () {
  21. obliczCene();
  22. });
  23.  
  24. $("#booking_numRooms4").change(function () {
  25. obliczCene();
  26. });
  27.  
  28. $("#booking_numRooms5").change(function () {
  29. obliczCene();
  30. });
  31.  
  32. $("#booking_numRooms6").change(function () {
  33. obliczCene();
  34. });
  35.  
  36. $("#booking_numRoomsAp").change(function () {
  37. obliczCene();
  38. });
  39.  
  40. $("#booking_date_from").change(function () {
  41. if($("#booking_date_to").val()) obliczIloscDni();
  42. });
  43.  
  44. $("#booking_date_to").change(function () {
  45. if($("#booking_date_from").val()) obliczIloscDni();
  46. });
  47.  
  48. $("#cena_do_zaplaty").text(cena);
  49.  
  50.  
  51. function wczytajDane(){
  52. cena = 0;
  53. room1 = $("#booking_numRooms1").val();
  54. room2 = $("#booking_numRooms2").val();
  55. room3 = $("#booking_numRooms3").val();
  56. room4 = $("#booking_numRooms4").val();
  57. room5 = $("#booking_numRooms5").val();
  58. room6 = $("#booking_numRooms6").val();
  59. roomap = $("#booking_numRoomsAp").val();
  60. }
  61.  
  62. function obliczIloscDni(){
  63. from = $("#booking_date_from").val();
  64. to = $("#booking_date_to").val();
  65.  
  66. from = from.match(/^(\d{4,4})-(\d{2,2})-(\d{2,2})$/);
  67. to = to.match(/^(\d{4,4})-(\d{2,2})-(\d{2,2})$/);
  68.  
  69. var date1 = new Date(from[1], from[2]-1, from[3]);
  70. var date2 = new Date(to[1], to[2]-1, to[3]);
  71.  
  72. var minutes = 1000*60;
  73. var hours = minutes*60;
  74. var days = hours*24;
  75.  
  76. var diff = Math.abs(date1.getTime() - date2.getTime());
  77.  
  78. iloscDni = Math.round(diff / days);
  79. obliczCene();
  80. }
  81.  
  82. function obliczCene(){
  83. wczytajDane();
  84. cena = ((room1 * 160) + (room2 * 220) + (room3 * 170) + (room4 * 200) + (room5 * 270) + (room6 * 285) + (roomap * 550)) * iloscDni;
  85.  
  86. $("#cena_do_zaplaty").text(cena);
  87. $("#naleznosc").val(cena);
  88. }
  89. });
skowron-line
Wstaw to sobie do funkcji oblicz cene.
A tak na marginesie to słyszałeś o selektorach ?
Lejto
nie bardzo
zrobiłem coś takiego:
  1. cena = ((room1 * 40) + (room2 * 40) + (room3 * 40)) * iloscDni;
  2.  
  3. if(iloscDni == 1)
  4. {
  5. z = 10;
  6. }
  7.  
  8. if(cena == "")
  9. {
  10.  
  11. }
  12. else
  13. {
  14. $("#cena_do_zaplaty").text(cena+z);
  15. }
  16. if(cena == "0")
  17. {
  18. $("#cena_do_zaplaty").text(cena);
  19. }

i działa

mam jeszcze kłopot z policzeniem ilości dni, kalendarze już zrobiłem teraz tylko jak policzyć dni i dodać je do ceny funkcje już mam tylko potrzebuje przekazać dane
wrzuciłem to na serwer http://zajazdkadar.pl/rezerwacjaa
może tu coś nie tak zrobiłem
  1. $.datepicker.regional['pl'] = {
  2. closeText: 'Zamknij',
  3. prevText: '<< Poprzedni',
  4. nextText: 'Następny >>',
  5. currentText: 'Dziś?',
  6. monthNames: ['Styczeń?','Luty','Marzec','Kwiecień?','Maj','Czerwiec',
  7. 'Lipiec','Sierpie?','Wrzesień?','Październik','Listopad','Grudzień?'],
  8. monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze',
  9. 'Lip','Sie','Wrz','Pa','Lis','Gru'],
  10. dayNames: ['Niedziela','Poniedzialek','Wtorek','Śšroda','Czwartek','Piątek','Sobota'],
  11. dayNamesShort: ['Nie','Pn','Wt','Śšr','Czw','Pt','So'],
  12. dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'],
  13. weekHeader: 'Tydz',
  14. dateFormat: 'yy-mm-dd',
  15. firstDay: 1,
  16. isRTL: false,
  17. showMonthAfterYear: false,
  18. yearSuffix: ''};
  19. $.datepicker.setDefaults($.datepicker.regional['pl']);
  20. $('#booking_date_from').datepicker();
  21. ;



punki co chodzi ale mam kolejny problem a mianowicie z ceną, dzieci mają mieć 50%, chce wczytać liczbę dzieci i obliczyc ale nic mi nie pokazuje, może źle wczytuje? dobrze to robie?
  1. $(document).ready(function(){
  2. var cena = 0;
  3. var room1 = $("#booking_numRooms1").val();
  4. var room2 = $("#booking_numRooms2").val();
  5. var room3 = $("#booking_numRooms3").val();
  6. var room4 = $("#booking_numRooms4").val();
  7. var dzieci = $("#booking_children").val();
  8. var dorosli = $("#booking_men").val();
  9. var iloscDni = 1;
  10.  
  11. $("#booking_numRooms1").change(function () {
  12. obliczCene();
  13. });
  14.  
  15. $("#booking_numRooms2").change(function () {
  16. obliczCene();
  17. });
  18.  
  19. $("#booking_numRooms3").change(function () {
  20. obliczCene();
  21. });
  22.  
  23. $("#booking_numRooms4").change(function () {
  24. obliczCene();
  25. });
  26.  
  27.  
  28. $("#booking_date_from").change(function () {
  29. if($("#booking_date_to").val()) obliczIloscDni();
  30. });
  31.  
  32. $("#booking_date_to").change(function () {
  33. if($("#booking_date_from").val()) obliczIloscDni();
  34. });
  35.  
  36. $("#cena_do_zaplaty").text(cena);
  37.  
  38.  
  39. function wczytajDane(){
  40. cena = 0;
  41. room1 = $("#booking_numRooms1").val();
  42. room2 = $("#booking_numRooms2").val();
  43. room3 = $("#booking_numRooms3").val();
  44. room4 = $("#booking_numRooms4").val();
  45. dzieci = $("#booking_children").val();
  46. dorosli = $("#booking_men").val();
  47. }
  48.  
  49. function obliczIloscDni(){
  50. ///
  51. }
  52.  
  53. function obliczCene(){
  54.  
  55. wczytajDane();
  56.  
  57. cena = ((room1 * 40) + (room2 * 40) + (room3 * 40)) * iloscDni * dzieci;
  58.  
  59. if(iloscDni == 1)
  60. {
  61. z = 10;
  62. }
  63.  
  64. if(cena == "")
  65. {
  66.  
  67. }
  68. else
  69. {
  70. if(!empty(dzieci))
  71. {
  72. $("#cena_do_zaplaty").text(cena*0.50+z);
  73. }
  74. else
  75. {
  76.  
  77. $("#cena_do_zaplaty").text(cena+z);
  78.  
  79. }
  80. }
  81. if(cena == "0")
  82. {
  83.  
  84. $("#cena_do_zaplaty").text(cena);
  85.  
  86. }
  87.  
  88.  
  89.  
  90.  
  91. $("#naleznosc").val(cena);
  92.  
  93. }
  94.  
  95. });
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.