webForumDet fria alternativet

Kolla om formulär är ifyllt!

JavaScriptur Javascript

14 svar · 512 visningar · startad av Alamartimo

AlamartimoMedlem sedan okt. 2004129 inlägg
#1

Hejsan!

Finns det något annat sätt eller bättre sätt att kolla om ett formulär är ifyllt korrekt än det nedan?

<script language="JavaScript"><!--

function kolla(fil) {
if ( document.namn.value == '')
{ 
        alert("Du har glömt att skriva in ditt namn!");
        document.namn.focus();
		return false;
    }
--!>

<INPUT type="submit" name="action" class="buttons" value="Skicka begäran!" onClick="return kolla()">

Vad jag är ute efter igentligen är att kolla om 2 fält har summan av ex 100

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Om du vill använda dig av javascript för att kontrollera om fälten är rätt ifyllda måste du använda dig av type="button".

<script language="text/javascript" type="text/javascript">
function Validate()
{
  intField1 = parseInt(document.forms[0].firstValue.value);
  intField2 = parseInt(document.forms[0].secondValue.value);

  if (!isNaN(intField1) && !isNaN(intField2)
  {
    if (intField1 + intField2 == 100)
    {
      //Ok, posta formuläret
      document.forms[0].submit();
    }
    else
    {
      alert("Resultatet blir inte 100.");
    }
  }
  else
  {
    //Fel, något av värdena är inte numeriskt
    alert("Felaktiga värden");
  }
}
</script>

<form action="sidan.asp" method="post">
  Värde 1: <input type="text" name="firstValue" value=""><br>
  Värde 2: <input type="text" name="secondValue" value=""><br>
  <input type="button" value="Skicka" onClick="Validate();">
</form>

Eller liknande...

AlamartimoMedlem sedan okt. 2004129 inlägg
#3

Okej..
jag har ju annan info som skall postas också som jag redan kollar så att det inte är tomt med javascript som jag visade ovan.
Kan man baka in det du skrev Engine^ ??

Försökte mig på att i nästa sida göra en koll innan insert men det blev inte så bra :e

Engine^Medlem sedan dec. 20003 887 inlägg
#4

Tja, du får ju göra olika funktioner beroende på vad du ska kontrollera.

Exempel för att kolla om något är tomt

function ValidateString(strSource)
{
  strThis = new String(strSource)

  if (strThis.length == 0)
    alert("Tom sträng!");
  else
    document.forms[0].submit();
}

Men det är klart du kan göra kollen på nästa sida också.

AlamartimoMedlem sedan okt. 2004129 inlägg
#5

Okej.

Jag får trixa lite till med det :)

Tack för att du bolla det med mig Engine^

Engine^Medlem sedan dec. 20003 887 inlägg
#6

Varsågod :)

PepeJeriaMedlem sedan feb. 2003774 inlägg
#7

Engine^ skrev:

Om du vill använda dig av javascript för att kontrollera om fälten är rätt ifyllda måste du använda dig av type="button".

Detta stämmer inte riktigt, man kan även använda sig av type="submit".

Exempel:

<script type="text/javascript">
function validateForm(form)
{
	if(!form.name.value)
	{
		alert("Du har glömt att skriva in ditt namn!");
		return false;
	}
	
	return true;
}
</script>

<form action="page.asp" onsubmit="return validateForm(this);">
	<input type="text" name="name"> 
	etc...
	<input type="submit">
</form>
AlamartimoMedlem sedan okt. 2004129 inlägg
#8

Fick lösa det med att jag kollade värdena för de 2 fälten på nästa sida och en

<meta http-equiv="Refresh" content="0; URL=practice.asp">

.

Blev inte riktigt som jag ville men jag får ge mig på det igen vid ett senare tillfälle. :)

Fick inte till det med Javascript som jag ville.

AlamartimoMedlem sedan okt. 2004129 inlägg
#9

Fast har Någon lust att klura lite på det så är det fritt fram :e ;)

Så här se javan ut nu som kollar om fält är tomma + så att 2 fält inte har ett värde mer än 50

<script language="JavaScript"><!--
function check(fil) {
if ( document.dopractice.fwing.value == '')
{ 
        alert("No Value given for Front Wing");
        document.dopractice.fwing.focus();
		return false;
    }

	if (document.dopractice.rwing.value == '') {
        alert("No Value given for Rear Wing");
        document.dopractice.rwing.focus();
		return false;
    }

	if (document.dopractice.fwing.value > '50') {
        alert("Value for Front Wing can't be more then 50");
        document.dopractice.fwing.focus();
		return false;
    }

	if (document.dopractice.rwing.value > '50') {
        alert("Value for Rear Wing can't be more then 50");
        document.dopractice.rwing.focus();
		return false;
    }

	if (document.dopractice.fbrake.value == '') {
        alert("No Value given for Front Brake");
        document.dopractice.fbrake.focus();
		return false;
    }

	if (document.dopractice.rbrake.value == '') {
        alert("No Value given for Rear Brake");
        document.dopractice.rbrake.focus();
		return false;
    }
 else
{
		document.dopractice.submit();
		return true;}
}
// -->
</script>

Men sen är det då fbrake och rbrake som jag vill kolla summan så att de 2 värdena är exakt 100 varken mer eller mindre.

Fick ju göra så att när den kör dopractice.asp så plussade jag de värdena och kollade så det vart 100 och körde en If sats på det som skickar användarna tillbaks till practice.asp.
Känns inte riktigt rätt :OO

J.N.Medlem sedan apr. 20031 660 inlägg
#10

HEJ!

Additionen borde bli såhär:

if (document.dopractice.fwing.value + document.dopractice.rwing.value != 100) {
        alert("Fwing plus rwing must be 100!");
        document.dopractice.fwing.focus();
        return false;
}

Eventuellt kanske du behöver eval() runt varje value.
http://www.devguru.com/Technologies/vbscript/quickref/eval.html

AlamartimoMedlem sedan okt. 2004129 inlägg
#11

J.N.

Din variant krävde att man inte hade 100.
Hade jag 100 i värdena totalt så fick jag en Alert inte annars.

Men det var klart intressant.. :)

Snart så *hehe*

Såg nu till min fasa att min andra variant som jag gjort gör att det blir helt fel.. Den hoppar över några summeringar på sidan som kollar så det är 100...

*hum*

Tja får jobba vidare på det....

J.N.Medlem sedan apr. 20031 660 inlägg
#12

HEJ!

Alamartimo skrev:

J.N.Din variant krävde att man inte hade 100.
Hade jag 100 i värdena totalt så fick jag en Alert inte annars.

Mitt kod tolkar jag som att om värdeett+värdetvå inte är 100 ska den säga till.

Om det skulle vara 9 eller 122 borde den säga till; är det 100 säger den inte till :q

Ändra ! till ett = till, då borde den säga till när det är endst 100, dvs du kommer inte förbi om du inte gör fel.

AlamartimoMedlem sedan okt. 2004129 inlägg
#13

Okej nu vet jag vad problemet är.

Värden jag får fram blir inte rätt

fbrake + rbrake lägger bara ihop talen ex 10+10 blir 1010

prövade med 10+0 och det funkade vilket innebär att den plussar inte talen utan bara lägger ihop dom.

Som du sa tidigare så måste jag nog köra Eval() men jag vet inte riktigt hur jag får inte det i koden?

Juste att du försöker löse det här :)

J.N.Medlem sedan apr. 20031 660 inlägg
#14

HEJ!

Varsågod!

Testa först att göra om det till nummer med CInt, http://www.devguru.com/Technologies/vbscript/quickref/cint.html
CInt(document.dopractice.fwing.value)

Om det inte fungerar använder du Eval runt det, ev utan CInt.
http://www.devguru.com/Technologies/vbscript/quickref/eval.html

AlamartimoMedlem sedan okt. 2004129 inlägg
#15

Ahhh äntligen fick jag rätt på det.. :)

Har prövat alla möjliga kombinationer etc..

Men jag löste det med parseInt.

if (parseInt(document.dopractice.fbrake.value) + parseInt(document.dopractice.rbrake.value) != '100') {
        alert("FBrake plus RBrake must be 100!");
        document.dopractice.fbrake.focus();
        return false;

Men jag hade aldrig fixat utan din hjälp J.N. :e

Tackar...

131 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)