<script language="JavaScript">
function validateform() {
if (document.register.ForNamn.value==""
| | document.register.EfterNamn.value==""
| | document.register.GatuAdress.value==""
| | document.register.AnvNamn.value==""
| | document.register.Postnummer.value==""
| | document.register.Ort.value==""
| | document.register.TelHem.value==""
| | document.register.Epost.value==""
| | document.register.password1.value=="")
{
alert("Alla fält måste fyllas i för att kunna bli registrerad.")
return false;
}
else if (document.register.Epost.value.indexOf("@") == -1)
{
alert("Du måste fylla i korrekt en E-mail adress.")
return false;
}
else if (document.register.password1.value != document.register.password2.value)
{
alert("Lösenorden stämmer inte överens, var god försök igen.")
return false;
}
else
{
return false;
}
}
function validate(field) {
var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Ogiltligt tecken! endast a-z, A-Z och 0-9 får förekomma i fältet.");
field.focus();
field.select();
}
}
</script>
Jag använder mig av detta formuläret på min sida
<form action="ansokan_ok.asp" method="post">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2"><span class="h2">Ansökningsformulär<br>
</span><br>
Genom att fylla i detta formulär och ladda upp filer så godkänner jag att dessa uppgifter och <br>
min IP-adress sparas i en databas och används av Bengt Dahlgren AB för de ändamål <br>
som ansökan avser.<br>
<br>
Fält med <span class="red">*</span> är obligatoriska uppgifter<br>
<br>
</td>
</tr>
<tr>
<td valign="top" class="bold">Förnamn:<span class="red">*</span><br>
</td>
<td valign="top"><input type="text" name="fornamn" size="25" maxlength="100"></td>
</tr>
<tr>
<td valign="top"><span class="bold">Efternamn:</span><span class="red">*</span><br>
</td>
<td valign="top"><input type="text" name="efternamn" size="25" maxlength="100"></td>
</tr>
<tr>
<td valign="top"><span class="bold">Adress:</span><span class="red">*</span><br>
</td>
<td valign="top"><input type="text" name="adress" size="25" maxlength="100"></td>
</tr>
<tr>
<td valign="top"><span class="bold">Postnr:</span><span class="red">*</span><br>
</td>
<td valign="top"><input type="text" name="postnr" size="8" maxlength="100"></td>
</tr>
<tr>
<td valign="top"><span class="bold">Postadress:</span><span class="red">*</span></td>
<td valign="top"><input type="text" name="postadress" size="25" maxlength="100"></td>
</tr>
<tr>
<td valign="top"><span class="bold">Telefon:</span><span class="red">*</span></td>
<td valign="top"><input type="input" name="telefon" size="25" maxlength="100"></td>
</tr>
<tr>
<td valign="top" class="bold">Mobiltelefon:</td>
<td valign="top"><input type="text" name="mobil" size="25" maxlength="100"></td>
</tr>
<tr>
<td valign="top" class="bold">E-post:<br>
</td>
<td valign="top"><input type="text" name="epost" size="38" maxlength="100"></td>
</tr>
<tr>
<td valign="top"><span class="bold">Födelsedatum:</span><span class="red"><span class="bold">*</span></span><span class="bold"><br>
</span></td>
<td valign="top">Födelsedatum måste hålla detta format <span class="red">ÅÅÅÅ-MM-DD</span><br>
<input type="text" name="fodelse_datum" size="15" maxlength="100"></td>
</tr>
<tr>
<td valign="top" class="bold">Utbildning:<span class="red">*</span></td>
<td valign="top">Fyll i fältet till höger vilken inriktning Ni har.<br>
<select name="utb" size="1">
<option>-- Välj utbildning --</option>
<option>Brandingenjör</option>
<option>Civilingenjör</option>
<option>Gymnasieingenjör</option>
<option>Högskoleingenjör</option>
<option>Annan</option>
</select> <input type="text" name="utbannan" size="25" maxlength="100"></td>
</tr>
<tr>
<td valign="top" class="bold">Övriga uppgifter:</td>
<td valign="top"><textarea name="kommentar" cols="40" rows="6"></textarea></td>
</tr>
<tr>
<td align="right" valign="top" colspan="2">
<div align="left">
På nästa sida har Ni möjlighet att bifoga CV eller annan i information i fil-format.<br>
<span class="red">Tips! </span>Förhandsgranska innan Ni går vidare för att se att informationen inte innehåller fel.</div>
<div align="right">
<p><input class="send" type="button" name="" value="Förhandsgranska" onclick="document.forms[0].action='preview.asp'; window.open('','preview','width=550,height=300,scrollbars=yes'); document.forms[0].target='preview'; document.forms[0].submit();"> <input class="send" type="button" name="" value="Gå vidare >>" onclick="document.forms[0].target='_self'; document.forms[0].action='ansokan_ok.asp'; document.forms[0].submit();"></p>
</div>
</td>
</tr>
</table>
<br>
<br>
<input type="hidden" name="datum" value="<%=now()%>">
<% ID = Request.Querystring("ID") %>
<% jobb = Request.Querystring("Jobb") %>
<% kontor = Request.Querystring("kontor") %>
<input type="hidden" name="jobbid" value="<%=ID%>">
<input type="hidden" name="jobb" value="<%=jobb%>">
<input type="hidden" name="kontor" value="<%=kontor%>">
<input type="hidden" name="ip" value="<%=ip%>">
</form>
Jag vill kolla att dessa fälten är ifyllda i min kod:
fornamn
efternamn
adress
postnr
postadress
telefon
fodelse_datum
utb
Sen är det några andra fält jag vill se att de är ifyllda på "rätt" sätt:
|epost| så att fältet inehåller @
|fodelse_datum| så att fältet är rätt formaterat ÅÅÅÅ-MM-DD
Sen har jag några "hidden" fält som måste få sina värden genom Querystring annars måste användaren prova att göra om ansökan:
|jobbid|
|datum|
|jobb|
|kontor|
|ip|
Hur skall jag skriva om koden för att få detta att fungera?
Jag provade koden som jag hittade och får följande fel
A Runtime Error has occured. Do you wish to debug?
Line:39
Error: Syntax error
på rad 39 finns:
if (document.register.ForNamn.value==""
Tack på förhand.
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
Om vi tar en sak i taget så skall vi nog kunna lösa det här. Hjälp till självhjälp så att säga, så du kanske förstår lite av vad du gör istället för att vi skriver hela sidan åt dig :)
Scriptet som du hittat är styrt mot ett formulär som heter register (det ser du i hänvisningen document.register). Det första vi måste gör är alltså att döpa ditt formulär till samma sak (eller ändra i scriptet). Formuläret döper du med name="register" i <form>-taggen. Sedan måste vi se till att funktionen validateform() anropas när vi vill skicka formuläret. Det gör vi genom att i samma <form>-tagg skriva onSubmit="return validateform();"
Tar vi sedan en liten närmare titt på scriptet så ser vi i början av funktionen validateform() att vi kollar en massa fält som inte finns i ditt formulär. För att göra det lite enkelt skriver vi om det så här;
<script language="JavaScript">
function validateform() {
if (document.register.fornamn.value==""
| | document.register.efternamn.value==""
| | document.register.adress.value=="")
{
alert("Alla fält måste fyllas i för att kunna bli registrerad.")
return false;
}
else if (document.register.epost.value.indexOf("@") == -1)
{
alert("Du måste fylla i korrekt en E-mail adress.")
return false;
}
else
{
return true;
}
}
</script>
Det vi gör nu är att kolla så fälten fornamn, efternamn och adress inte är tomma samt att fältet epost måste innehålla ett snabel-a. Lägg in detta först så fortsätter vi sedan.
Hej, Jag har lagt in koden på sidan nu och jag har gjort som du har skrivit (helt underbart med en förklaring så man förstår bättre och kan lära sig ;))
Men får samma felkod som innan sen har jag lite special med mina knappar som man skickar in formuläret med.
fick ordning på felmedelandet det gick inte att ha mellanslag mellan | | utan bara ||
Epost fältet är inte obligatriskt att fylla i, därför behöver man inte få upp rutan |Ni måste fylla i en korrekt E-mail adress.| om det inte är ifyllt alls
I fälten telefon och mobil vill jag gärna ha så att mellan riktnumret och det andra numret sätts in ett - dvs om det inte redan finns om detta nu går? och att det bara tillåts siffror
Fältet postnr skall det också bara gå att skriva siffror.
Tack på förhand
Jonas
red: lagt till text
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
fick ordning på felmedelandet det gick inte att ha mellanslag mellan | | utan bara ||
Jo... "||" är operatorn (tecknet) för ett logiskt eller.
Epost fältet är inte obligatriskt att fylla i, därför behöver man inte få upp rutan |Ni måste fylla i en korrekt E-mail adress.| om det inte är ifyllt alls
Ok, då plockar vi bort den (inte speciellt svårt, så det borde du klara nu :) ), men se exemplet längre ner.
I fälten telefon och mobil vill jag gärna ha så att mellan riktnumret och det andra numret sätts in ett - dvs om det inte redan finns om detta nu går?...
Det kan vi enkelt fixa direkt i formulärsfältet med;
Fältet postnr skall det också bara gå att skriva siffror.
Du slänger vi in en liten funktion som validerar det. Resultatet blir då ungefär så här;
<script language="JavaScript">
function validateform() {
if (document.register.fornamn.value==""
|| document.register.efternamn.value==""
|| document.register.adress.value=="")
{
alert("Alla fält måste fyllas i för att kunna bli registrerad.")
return false;
}
else if (!validateString(document.register.telefon.value,"0123456789-")
{
alert("Telefon-nummer får bara vara siffor (0-9) och '-'.")
return false;
}
else if (!validateString(document.register.postnr.value,"0123456789")
{
alert("Postnummer får bara vara siffor (0-9).")
return false;
}
else
{
return true;
}
}
function validateString(str,valid){
var res=0;
for(var n=0;n<str.length;n++){ res+=(valid.indexOf(str.substring(n,n+1))<0)?1:0; }
return (res>0) ? false:true;
}
</script>
Som du ser är e-post valideringen borta samt att vi har fått 2 andra fält som vi kollar. Funktionen validateString() anropas med 2 värden. Det första är strängen som du skall kolla, det andra talar om vilka tecken som är ok. Är strängen som du kollar ok returneras true (det är mest logiskt). Men, eftersom vi vill kolla om värdet inte är ok sätter vi ett utropstecken (logiskt not) framför anropet.
Jag måste ha denna knappen för att skicka formuläret annars blir det fel när man klickat på preview knappen då kommer man till den när man skall gå vidare
<input class="send" type="button" name="" value="Gå vidare >>" onclick="document.forms[0].target='_self'; document.forms[0].action='ansokan_ok.asp'; document.forms[0].submit();">
Men som den ser ut nu funkar inte validate koden utan man kommer till ansokan_ok.asp utan att validera
Hur skall man göra???
Tack på förhand
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
Har en liten funktion som jag petade ihop för ett tag sen...
function checkDate(input){
var pattern = /^(\d{4})-(\d{2})-(\d{2})$/;
if(!pattern.test(input))
return false;
var year = parseInt(RegExp.$1),
month = parseInt(RegExp.$2) - 1,
date = parseInt(RegExp.$3);
var toCheck = new Date();
toCheck.setFullYear(year);
toCheck.setMonth(month);
toCheck.setDate(date);
return toCheck.getFullYear() == year && toCheck.getMonth() == month && toCheck.getDate() == date;
} // checkDate()
...senare i koden...
if(!checkDate(document.forms.register.fodelse_datum.value))
alert("Du måste fylla i ett giltigt datum i formen ÅÅÅÅ-MM-DD i rutan \"födelsedatum\".");
------------------ Be afraid. Be very, very afraid.
Hur skall jag "baka" in din kod i den kden jag har??? (är inte så bra på javascript... än ;))
<script language="JavaScript">
function validateform() {
if (document.register.fornamn.value==0
|| document.register.efternamn.value==0
|| document.register.adress.value==0
|| document.register.postnr.value==0
|| document.register.postadress.value==0
|| document.register.fodelse_datum.value==0
|| document.register.telefon.value==0)
{
alert("Alla fält med * måste fyllas i för att kunna gå vidare.")
return false;
}
else if (!validateString(document.register.postnr.value,"0123456789"))
{
alert("Postnummer får bara vara siffor (0-9) och inga blanksteg.")
return false;
}
else if (!validateString(document.register.telefon.value,"0123456789-"))
{
alert("Telefon-nummer får bara vara siffor (0-9) och '-'.")
return false;
}
else if (!validateString(document.register.mobil.value,"0123456789-"))
{
alert("Mobiltelefon-nummer får bara vara siffor (0-9) och '-'.")
return false;
}
else if (!validateString(document.register.fodelse_datum.value,"0123456789-"))
{
alert("Födelsedatumet får bara innehålla siffor (0-9) och '-' och hålla formatet ÅÅÅÅ-MM-DD.")
return false;
}
else if (!document.register.ruta.checked)
{
alert("Ni måste godkänna vilkoren för att gå vidare")
return false;
}
else
{
return true;
}
}
function validateString(str,valid){
var res=0;
for(var n=0;n<str.length;n++){ res+=(valid.indexOf(str.substring(n,n+1))<0)?1:0; }
return (res>0) ? false:true;
}
</script>
Det råkar inte vara nån som vet hur jag skall fixa detta problem?
Jag måste ha denna knappen för att skicka formuläret annars blir det fel när man klickat på preview knappen då kommer man till den när man skall gå vidare
<input class="send" type="button" name="" value="Gå vidare >>" onclick="document.forms[0].target='_self'; document.forms[0].action='ansokan_ok.asp'; document.forms[0].submit();">
Men som den ser ut nu funkar inte validate koden utan man kommer till ansokan_ok.asp utan att validera
på något sätt måste man lägga in denna kod snutt i knappen men jag har provat utan framgång
onSubmit="return validateform();"
Hur skall man göra???
Tack på förhand
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
Bakar in den nya funktionen samt preview-alternativet;
<script language="JavaScript">
preview=null;
function validateform() {
if (document.register.fornamn.value==0
|| document.register.efternamn.value==0
|| document.register.adress.value==0
|| document.register.postnr.value==0
|| document.register.postadress.value==0
|| document.register.fodelse_datum.value==0
|| document.register.telefon.value==0)
{
alert("Alla fält med * måste fyllas i för att kunna gå vidare.")
return false;
}
else if (!validateString(document.register.postnr.value,"0123456789"))
{
alert("Postnummer får bara vara siffor (0-9) och inga blanksteg.")
return false;
}
else if (!validateString(document.register.telefon.value,"0123456789-"))
{
alert("Telefon-nummer får bara vara siffor (0-9) och '-'.")
return false;
}
else if (!validateString(document.register.mobil.value,"0123456789-"))
{
alert("Mobiltelefon-nummer får bara vara siffor (0-9) och '-'.")
return false;
}
else if (!checkDate(document.forms.register.fodelse_datum.value))
{
alert("Födelsedatumet får bara innehålla siffor (0-9) och '-' och hålla formatet ÅÅÅÅ-MM-DD.")
return false;
}
else if (!document.register.ruta.checked)
{
alert("Ni måste godkänna vilkoren för att gå vidare")
return false;
}
else
{
return true;
}
}
function validateString(str,valid){
var res=0;
for(var n=0;n<str.length;n++){ res+=(valid.indexOf(str.substring(n,n+1))<0)?1:0; }
return (res>0) ? false:true;
}
function checkDate(input){
var pattern = /^(\d{4})-(\d{2})-(\d{2})$/;
if(!pattern.test(input))
return false;
var year = parseInt(RegExp.$1),
month = parseInt(RegExp.$2) - 1,
date = parseInt(RegExp.$3);
var toCheck = new Date();
toCheck.setFullYear(year);
toCheck.setMonth(month);
toCheck.setDate(date);
return toCheck.getFullYear() == year && toCheck.getMonth() == month && toCheck.getDate() == date;
}
</script>
Knappen fungerar inte som den ska den går fortfarande till ansokan_ok.asp utan att validera
Ja...Si... Jag fick för mig att det var så du ville ha det. Hur som hellst, på knappar som du inte vill använda validerings-funktionen lägger du till preview=1; först i onClick. Annars valideras formuläret som vanligt. Alltså när onSubmit inträffar kollas om variabeln preview är satt, i så fall används inte validering.
När jag provar med en "vanlig" submit knapp så funkar valideringen MEN då funkar det inte om man har tryckt på Förhandsgranska knappen innan för klickar man på Gå vidare >> efter det så öppnas preview.asp istället för att gå till ansokan_ok.asp.
Detta har ju nåt med "special" knapparna jag använder för att kunna förhandsgranska.
Jag fick den knappkoden av @nders, jag vet inte om det finns ett bättre sätt att lösa det på men jag vill ha preview och validering så....
Jag vet inte hur man löser det som sagt vet inte mycket om javascript
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd
Jag skulle vilja att du börjar med att ändrar document.forms[0] till document.register för knappalternativ 2. (forms[x] använder du för att peka på ett formulär med dess index-nummer från 0 och uppåt, således första formuläret. Lägger du av någon anledning till ett formulär före detta på sidan kommer det inte att funka. Använder du namnet däremot är det ok).
Sedan. På de knappar som du vill hoppa över valideringen lägger du on preview=1; på först i onClick-eventet. Knappar som du vill skall använda valideringen lägger du in preview=null; på.
Jag har lite problem med den kodsnutten som validerar att man skriver ÅÅÅÅ-MM-DD.
Använder jag ett datum med månaderna 08 och 09 så funkar den inte.
Jag får upp rutan då.
Varför?
Här är
<script language="JavaScript">
preview=null;
function validateform() {
if (document.register.fornamn.value==0
|| document.register.efternamn.value==0
|| document.register.adress.value==0
|| document.register.postnr.value==0
|| document.register.postadress.value==0
|| document.register.fodelse_datum.value==0
|| document.register.telefon.value==0)
{
alert("Alla fält med * måste fyllas i för att kunna gå vidare.")
return false;
}
else if (!validateString(document.register.postnr.value,"0123456789"))
{
alert("Postnummer får bara vara siffor (0-9) och inga blanksteg.")
return false;
}
else if (!validateString(document.register.telefon.value,"0123456789-"))
{
alert("Telefon-nummer får bara vara siffor (0-9) och '-'.")
return false;
}
else if (!validateString(document.register.mobil.value,"0123456789-"))
{
alert("Mobiltelefon-nummer får bara vara siffor (0-9) och '-'.")
return false;
}
else if (!checkDate(document.forms.register.fodelse_datum.value))
{
alert("Födelsedatumet får bara innehålla siffor (0-9) och '-' och hålla formatet ÅÅÅÅ-MM-DD t ex 1968-04-16.")
return false;
}
else if (!document.register.ruta.checked)
{
alert("Ni måste godkänna villkoren för att gå vidare")
return false;
}
else
{
return true;
}
}
function validateString(str,valid){
var res=0;
for(var n=0;n<str.length;n++){ res+=(valid.indexOf(str.substring(n,n+1))<0)?1:0; }
return (res>0) ? false:true;
}
function checkDate(input){
var pattern = /^(\d{4})-(\d{2})-(\d{2})$/;
if(!pattern.test(input))
return false;
var year = parseInt(RegExp.$1),
month = parseInt(RegExp.$2) - 1,
date = parseInt(RegExp.$3);
var toCheck = new Date();
toCheck.setFullYear(year);
toCheck.setMonth(month);
toCheck.setDate(date);
return toCheck.getFullYear() == year && toCheck.getMonth() == month && toCheck.getDate() == date;
}
</script>
Tack på förhand
------------------
--------------
STARZINGER
Tackar & Bockar forumet rockar! Med ett hugg faller inget träd