17 svar
147 visningar
Shali_Mehr behöver inte mer hjälp
Shali_Mehr 274
Postad: 8 jul 2023 15:01 Redigerad: 8 jul 2023 15:02

Validering

Hej kan ni påpeka varför min funktion inte rör som det tillverkads Tack?

function validateForm(){
		var name = document.getElementById('name').value;
		var number = document.getElementById('number').value;
		var email = document.getElementById('email').value;
		var adress = document.getElementById('adress').value;
		var city = document.getElementById('city').value;
		var state = document.getElementById(state).value;
		var zip = document.getElementById('zip').value;

	if(name === '' || number === '' || email === '' || adress === '' || state === '' || city ==== '' || zip === '' ){


		alert('Please provide all the sections thanks!');

			return false;

		}else{
			return true;
		}
	}
Yngve 40546 – Livehjälpare
Postad: 8 jul 2023 15:35 Redigerad: 8 jul 2023 15:38

Jag kan inte JavaScript, men sen här satsen ser skum ut. Variabeln state har väl ett okänt värde vid anropet av getElementById?

Shali_Mehr 274
Postad: 8 jul 2023 15:57

bra att du sagt det men ändå saknar den att funka!

Yngve 40546 – Livehjälpare
Postad: 8 jul 2023 17:12 Redigerad: 8 jul 2023 17:20

Jag kan inte uttala mig om syntaxen, men vad händer när du kör funktionen?

Lägg gärna in spårutskrifter i koden, t.ex att du skriver ut värdet av name, number, email o.s.v. innan du gör jämförelsen.

 

CurtJ 1203
Postad: 9 jul 2023 10:53

Jag tror också det hjälper om du visar HTML-koden. 

Shali_Mehr 274
Postad: 9 jul 2023 11:05 Redigerad: 9 jul 2023 11:06
<div id="Hiding">
	<div class="signUp">
		<form onsubmit="return validateForm()">
		<fieldset>
		<legend>Personal Info</legend>
		<label for="name">
		<div class="name">
		<i class="fa-solid fa-user"></i>
		<p>Full Name</p>
		</div>
		<input type="text" name="name" id="name" placeholder="SomeOne..">
		</label>
		<label for="number">
		<div class="name">
		<i class="fa-solid fa-phone"></i>
		<p>Number</p>
		</div>
		<input type="text" name="number" id="number" placeholder="+46739444245">
		</label>
		<label for="adress">
		<div class="name">
		<i class="fa-solid fa-location-pin"></i>
		<p>Address</p>
		</div>
		<input type="text" name="adress" id="adress" placeholder="Lillmössvägen 8A">
		</label>
		<label for="email">
		<div class="name">
		<i class="fa-solid fa-envelope"></i>
		<p>Email</p>
		</div>
		<input type="text" name="email" id="email" placeholder="Enter your email adress">
		</label>
		<label for="city">
		<div class="name">
		<i class="fa-solid fa-landmark"></i>
		<p>City</p>
		</div>
		<input type="text" name="city" id="city" placeholder="Hägersten..">
		</label>
		<label for="state">
		<div class="name">
		<div class="last">
		<p>State</p>
		<input type="text" name="state" id="state" placeholder="Stockholm">
		</div>
		<div class="last">
		<p>ZIP</p>
		<input type="number" id="zip" name="zip" placeholder="01001">
		</div>
		</div>
		</label>
		</fieldset>
		</form>
	</div>
</div>
		<p id="newText"></p>
		<div class="button">
		<button id="button" onclick="myButton()" 	type="submit">Register</button>
			<a href="sign-up.html" id="back"></a>
		</div>
CurtJ 1203
Postad: 9 jul 2023 11:12

Ser nu att du har 4 likhetstecken i ditt villkod. 

Shali_Mehr 274
Postad: 9 jul 2023 11:15

jag förstår inte dig !

CurtJ 1203
Postad: 9 jul 2023 11:27

city ==== ''

detta ställer till det för dig. Javascript sväljer det mesta men säger inte ifrån om det är felaktigt. 

Shali_Mehr 274
Postad: 9 jul 2023 12:09

Nu använde jag ett annat sätt, i formen onsubmit använde jag "return false;" och på knappen onclick använde jag en funktion som  är validateform. sedan använde jag samma js skrivit som jag skrivit här, nu svarar den men det enda som jag vill ha ett särskilt width and height medan användare ifyller alla i formen. 

CurtJ 1203
Postad: 9 jul 2023 12:35

Det är svårt att förstå vad du menar. Kan du visa din kompletta kod (JS och HTML) och vad du vill uppnå så kan vi försöka hjälpa dig. 

Shali_Mehr 274
Postad: 9 jul 2023 13:04 Redigerad: 9 jul 2023 13:10
<form onsubmit="return false;">
					<fieldset>
					<legend>Personal Info</legend>
						<label for="name">
							<div class="name">
								<i class="fa-solid fa-user"></i>
								<p>Full Name</p>
							</div>
							<input type="text" name="name" id="name" placeholder="SomeOne else..">
						</label>
						<label for="number">
							<div class="name">
								<i class="fa-solid fa-phone"></i>
								<p>Number</p>
							</div>
							<input type="text" name="number" id="number" placeholder="+46739444245">
						</label>
						<label for="adress">
							<div class="name">
								<i class="fa-solid fa-location-pin"></i>
								<p>Address</p>
							</div>
							<input type="text" name="adress" id="adress" placeholder="Lillmössvägen 8A">
						</label>
						<label for="email">
							<div class="name">
								<i class="fa-solid fa-envelope"></i>
								<p>Email</p>
							</div>
							<input type="text" name="email" id="email" placeholder="Enter your email adress">
						</label>
						<label for="city">
							<div class="name">
								<i class="fa-solid fa-landmark"></i>
								<p>City</p>
							</div>
							<input type="text" name="city" id="city" placeholder="Hägersten..">
						</label>
						<label for="state">
							<div class="name">
								<div class="last">
									<p>State</p>
									<input type="text" name="state" id="state" placeholder="Stockholm">
								</div>
								<div class="last">
									<p>ZIP</p>
									<input type="number" id="zip" name="zip" placeholder="01001">
								</div>
							</div>
						</label>
					</fieldset>
				</form>
Shali_Mehr 274
Postad: 9 jul 2023 13:07 Redigerad: 9 jul 2023 13:11
function validateForm(){
				
				var a = document.getElementById('name').value;
				var b = document.getElementById('number').value;
				var c = document.getElementById('adress').value;
				var d = document.getElementById('email').value;
				var e = document.getElementById('state').value;
				var f = document.getElementById('city').value;
				var g = document.getElementById('zip').value;


				if(a === ''){
					alert("Fill the section name!");

				}else if(b === ''){
					alert("Fill the section number!");


				}else if(c === ''){
					alert("Fill the section adress!");

				}else if(d === ''){
					alert("Fill the section email!");

				}else if(e === ''){
					alert("Fill the section state!");

				}else if(f === ''){
					alert("Fill the section city!");

				}else if(g === ''){
					alert("Fill the section Zip!");

				}

				else{


					alert("THANKS FOR SUBMITTING!");


				}
			}
Shali_Mehr 274
Postad: 9 jul 2023 13:09

det som jag vill är medan jag uppfyller allt i formen, kommer den sista delen med olika färger svara på display, den else menar jag!

CurtJ 1203
Postad: 9 jul 2023 13:17

Och hur vill du aktivera validateForm? Vad är det för färger du vill visa? Vad ska de representera och var ska de visas? 

Shali_Mehr 274
Postad: 9 jul 2023 13:43 Redigerad: 9 jul 2023 13:44

det ska visa på samma ruta som "if och else if" svarar men bara för visa lite olikt på else delen i sist så därför vill jag ha olika färg på bakgrunden av texten thanks for submitting!

CurtJ 1203
Postad: 9 jul 2023 14:13

Det är inte möjligt att ändra färgen på systemets alert-box. Du måste skapa ett eget fönster som gör samma sak som är möjligt att styra med CSS. 

zino92 63
Postad: 12 nov 22:51
Shali_Mehr skrev:
function validateForm(){
				
				var a = document.getElementById('name').value;
				var b = document.getElementById('number').value;
				var c = document.getElementById('adress').value;
				var d = document.getElementById('email').value;
				var e = document.getElementById('state').value;
				var f = document.getElementById('city').value;
				var g = document.getElementById('zip').value;


				if(a === ''){
					alert("Fill the section name!");

				}else if(b === ''){
					alert("Fill the section number!");


				}else if(c === ''){
					alert("Fill the section adress!");

				}else if(d === ''){
					alert("Fill the section email!");

				}else if(e === ''){
					alert("Fill the section state!");

				}else if(f === ''){
					alert("Fill the section city!");

				}else if(g === ''){
					alert("Fill the section Zip!");

				}

				else{


					alert("THANKS FOR SUBMITTING!");


				}
			}

Tänk på att HTML5 required attribut för input element funkar för att kontrollera obligatoriska element hyfsat bra i mån av grundläggande front-end validering istället för att behöva kolla om besökare fyllt i värde i input fält via JS.

Likaså är front-end validering av formulärdata inte att rekommendera rent allmänt. Mer än i väldigt basic fall.

Som @CurtJ skrev så kan du inte styla alert boxen, men däremot kan du lägga in en "output div" t ex. med ett unikt ID som du sen kan hämta via document.getElementById i din JS kod och antingen styla via extern CSS fil genom att koda upp stil för IDt för output elementet eller lägga till en klass till ID elementet när det du vill uppnå via JS har inträffat, och sen koppla en CSS stilregel till just den klassen.

Lägga till klass till sådan output div hade kunnat se ut något som följer:
document.querySelector("#Hiding form").addEventListener("submit", function() {

let outputDIV = document.getElementById("output");

   if(validateForm()) { // if validateForm returns true = validation complete and valid, color output DIV green via CSS class .greenBGColor

      outputDIV.classList.add("greenBGColor");

   }else {

         if(outputDIV.classList.contains("greenBGColor")) { // if NOT validated, we check if .greenBGColor class exist, if it does, we might want to remove it? To not show green color for when Not validated maybe?

            outputDIV.classList.remove("greenBGColor");

         }

      }

});

OBS! Har inte testat koden ovan, bara höftat fram den som ett grovt skissat exempel, och förmodligen funkar den inte exakt såsom den är skriven, men skrivit den som pseudokod för att försöka förmedla ett typ av tillvägagångssätt som kanske hade kunnat hjälpa dig uppnå vad jag tror du försöker få till?

Svara
Close