HulthMedlem sedan juni 2001272 inlägg <script language="JavaScript" type="text/javascript">
function CheckForm () {
String.prototype.isValidEmail = function(){
return !! this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}
if (document.form1.namn.value=="") {
alert("Fyll i ditt namn!");
document.form1.namn.focus();
return false;
}
if (!document.form1.epost.value.isValidEmail()){
alert("E-postadressen stämmer inte!");
document.form1.epost.focus();
return false;
}
if (document.form1.text.value=="") {
alert("Fyll i ett meddelande!");
document.form1.epost.focus();
return false;
}
return true;
document.form1.GO.disabled=true;
}
</script>
Har lite problem med ovanstående kod. När man trycker på skicka och alla fält är tomma kommer det upp ett meddlande om att man ska fylla i fältet namn.
Om man sen fyller i sitt namn och trycker på submit igen verkar den hoppa över resten av koden och gå vidare med att skicka mailet.
Någon som kan se det jag inte ser? :)
Kan vara att du har return false i slutet på if-satsen.
Ha en variabel som är true från början och ändra värdet till false i if-satserna istället för return false och returnera variabeln istället.
HulthMedlem sedan juni 2001272 inlägg Nämde jag inte att jag är helt grön när det gäller javascript?
Om vilkoret inte uppfylls ska den väl neka att formuläret skickas, därav return false?
Eller är jag ute och cyklar vätternrundan?
<form action="mejla.asp" name="form1" onSubmit="return CheckForm();">
Är väl bara den som behöver visas också?
DenkanMedlem sedan juni 2002256 inlägg Prova
<script language="JavaScript" type="text/javascript">
function CheckForm () {
String.prototype.isValidEmail = function(){
return !! this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}
if (document.form1.namn.value=="") {
alert("Fyll i ditt namn!");
document.form1.namn.focus();
return false;
} else if (!document.form1.epost.value.isValidEmail()){
alert("E-postadressen stämmer inte!");
document.form1.epost.focus();
return false;
} else if (document.form1.text.value=="") {
alert("Fyll i ett meddelande!");
document.form1.epost.focus();
return false;
} else {
return true;
document.form1.GO.disabled=true;
}
}
</script>
GuffaMedlem sedan juni 2004533 inlägg Det enda felet på din kod är att den placerar markören i fel fält i kontrollen av meddelandet. Markören hamnar då i epost-fältet. Förutom det så är det inget fel på koden, den fungerar hur bra som helst.
Kolla så att namnen på fälten i formuläret stämmer med namnen som används i javascript-koden.
Ifall du slår på rapporteringen av javascript-felmeddelanden i webbläsaren så blir det mycket enklare för dig att felsöka.
HulthMedlem sedan juni 2001272 inlägg
Guffa skrev:
Det enda felet på din kod är att den placerar markören i fel fält i kontrollen av meddelandet. Markören hamnar då i epost-fältet. Förutom det så är det inget fel på koden, den fungerar hur bra som helst.
Kolla så att namnen på fälten i formuläret stämmer med namnen som används i javascript-koden.
Ifall du slår på rapporteringen av javascript-felmeddelanden i webbläsaren så blir det mycket enklare för dig att felsöka.
Hulth skrev:
När man trycker på skicka och alla fält är tomma kommer det upp ett meddlande om att man ska fylla i fältet namn.
Om man sen fyller i sitt namn och trycker på submit igen verkar den hoppa över resten av koden och gå vidare med att skicka mailet.
Alltså, om jag inte fyller i nåt fält klagar den på namn, om jag fyller i namn och trycker submit igen ska den ju klaga på att epost-fältet är ogiltligt. Men det gör den inte, utan istället går den vidare till sidan som är i "action".
GuffaMedlem sedan juni 2004533 inlägg
Hulth skrev:
Alltså, om jag inte fyller i nåt fält klagar den på namn, om jag fyller i namn och trycker submit igen ska den ju klaga på att epost-fältet är ogiltligt. Men det gör den inte, utan istället går den vidare till sidan som är i "action".
Jo, det gör den. Jag har testat koden, och som sagt så fungerar den alldeles utmärkt.
Eftersom du inte har visat hur ditt formulär ser ut så fick jag konstruera ett formulär efter vilka fält koden använder. Därför stämmer naturligtvis namnen på fälten i mitt formulär med namnen som används i koden.
Att döma av din beskrivning av vad som händer så heter inte fältet "epost" som du skriver in e-post-adressen i.
Ifall du slår på rapporteringen av javascript-fel i webbläsaren så kommer du nog också att få ett felmeddelande i koden som letar efter ett fält som heter "epost".
HulthMedlem sedan juni 2001272 inlägg Jag får be om ursäkt.
Hade missat </form> och nu när jag la till det fungerade det klockrent.
Tack för att du tog dig tid Guffa. :birp
Formulärvalidering fungerar ej
Har problem med validering av ett formulär till ett forum.
Så här ser funktionen ut:
function validateNewThread(obj) {
var elms = obj.elements;
if(trim(elms["forumsubject"].value).length != 0) {
return true;
} else {
alert("Fyll i en rubrik");
document.newthread.forumsubject.focus();
return false;
}
Så här ser HTML-koden ut:
<form name="newthread" onsubmit="return validateNewThread(this)">
Vad kan vara fel? Detta är något som jag har satt ihop från andra kodexempel jag sett här på wF. Är en riktigt amatör när det gäller javascript :) Inser dock hur effektivt det är att använda vid validering av formulär innan informationen skickas vidare till databasen.
/R Av rent misstag så hamnade detta inlägg helt fel. Det var menat som en ny tråd. Hoppas den går att ta bort eftersom jag skapade en ny tråd.