From 8bfb212f738243e704ebbdc515268978bf203a82 Mon Sep 17 00:00:00 2001 From: Iva Date: Wed, 4 Nov 2026 14:31:24 +0100 Subject: [PATCH] urejeno preverjanje vnosa ure --- js/rezervacija.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/js/rezervacija.js b/js/rezervacija.js index 526ed83..b3ce8c1 100644 --- a/js/rezervacija.js +++ b/js/rezervacija.js @@ -8,6 +8,18 @@ const telefon = document.querySelector("#telefon-st"); const napakaTelefon = document.querySelector("#napaka-telefon"); const datum = document.querySelector("#datum-obiska"); const napakaDatum = document.querySelector("#napaka-datum"); +const ura = document.querySelector("#ura-obiska"); +const napakaUra = document.querySelector("#napaka-ura"); + +const odpiralniCas = [ + [10, 22], // Nedelja + [9, 22], // Ponedeljek + null, // Torek - zaprto + [9, 22], // Sreda + [9, 22], // Četrtek + [9, 23], // Petek + [10, 23] // Sobota +]; function preveriIme() { // Preveri, ali sta ime in priimek pravilno vnesena. const vrednost = ime.value.trim(); //odstrani presledke na zacetku in koncu @@ -86,12 +98,67 @@ function preveriDatum() { return false; //zapisano na koncu da se izognemo ponavljanju, ker do tega dela pridemo samo če je datum neustrezen } +// Preveri pravilnost ure rezervacije. +function preveriUro() { + const vrednost = ura.value; + + // Najprej preverimo, ali sta datum in ura izbrana. + if (vrednost === "" || datum.value === "") { //dan more biti izbran ker se delavni cas od dnva do dneva spreminja + napakaUra.textContent = "Izberite datum in uro rezervacije."; + ura.classList.add("napacno"); + return false; + } + + // Pridobimo odpiralni čas za izbrani dan. + const izbraniDatum = new Date(datum.value + "T00:00:00"); + const danVTednu = izbraniDatum.getDay(); + const odpiralniCasDanes = odpiralniCas[danVTednu]; //sped zelimo dobiti dan v tednu (zgornji dve vrstici) da lahko na podlagi tega izberemo delovni cas + + // Razdelimo izbrano uro na ure in minute. + const deli = vrednost.split(":"); + const samoUra = Number(deli[0]); + const samoMin = Number(deli[1]); + + // Preverimo, ali je rezervacija vsaj eno uro v prihodnosti. + const zdaj = new Date(); //to nam da cas da pripravimo mizo npr. + const najmanjsiCas = zdaj.getTime() + 60 * 60 * 1000; //cas se zapisuje v milisekundah zato je za dodajo ene ure 60*60*1000 + const casRezervacije = new Date(datum.value + "T" + vrednost); //zelimo vedet datu in uro rezervacije, datum.value+"T"+vrednost je pa standardni zapis datuma, new Date pa uporabljamo zato da lahko z njim racunamo + + if (odpiralniCasDanes === null) { + napakaUra.textContent = "Ob torkih je restavracija zaprta."; + } + else { + const odprtje = odpiralniCasDanes[0]; + const zaprtje = odpiralniCasDanes[1]; + const zadnjaUra = zaprtje - 1; //ne morejo se rezervirati ob zaprtju (samo zdrava pamet) + + if (samoUra < odprtje) { //ce je ura manjsa od odprtja + napakaUra.textContent = "Restavracija ob izbrani uri še ni odprta."; + } + else if (samoUra > zadnjaUra || (samoUra === zadnjaUra && samoMin > 0)) { //ce je ura vecja od zadnje ure, ali pa je enaka zadnji mozni uri in so minute vecje 0 (ker lahko se ob 21.00 rezerviras mizo) + napakaUra.textContent = "Rezervacija je mogoča najpozneje eno uro pred zaprtjem."; + } + else if (casRezervacije.getTime() < najmanjsiCas) { + napakaUra.textContent = "Rezervacijo morate oddati vsaj eno uro pred obiskom."; + } + else { //vse je pravilno + napakaUra.textContent = ""; + ura.classList.remove("napacno"); + return true; + } + } + + ura.classList.add("napacno"); //spet se izogibamo ponavljanju, to se zgodi vsakic ko je kaj narobe + return false; +} + // Preverjanje med tipkanjem ime.addEventListener("input", preveriIme); //funkcija se opravi ko zacnemo pisati v ime, se zacne izvajati funkcija email.addEventListener("input", preveriEmail); telefon.addEventListener("input", preveriTelefon); datum.addEventListener("select", preveriDatum); //tu imam select ker datum izbira ne vpisuje tako da je bolj logicno +ura.addEventListener("change", preveriUro); obrazec.addEventListener("submit", function(event) { //ko oddamo funkcijo se izvede preverjanje event.preventDefault(); //preprecimo default preverjsnje ob submitu @@ -100,8 +167,9 @@ obrazec.addEventListener("submit", function(event) { //ko oddamo funkcijo se izv const emailPravilno = preveriEmail(); const telefonPravilno = preveriTelefon(); const datumPravilno = preveriDatum(); + const uraPravilno = preveriUro(); - if (imePravilno && emailPravilno && telefonPravilno && datumPravilno) { + if (imePravilno && emailPravilno && telefonPravilno && datumPravilno && uraPravilno) { //se morem preveriti ostale vrednosti } }); \ No newline at end of file