webForumDet fria alternativet

Fel vid validering av formulär

JavaScript

12 svar · 255 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

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.

Medlem sedan dec. 20025 483 inlägg
#2

Det saknas en avslutande måsvinge:

function validateNewThread(obj) {
   var elms = obj.elements;

   if(trim(elms["forumsubject"].value).length != 0) {
       return true;
       } else {
       alert("Fyll i en rubrik");
       elms["forumsubject"].focus();
       return false;
       }
} [b]<---[/b]

:)

Medlem sedan apr. 20041 597 inlägg
#3

Haha...vilken orutin! :e Undrar när ska man börja lära sig...om man någonsin gör det!

Medlem sedan apr. 20041 597 inlägg
#4

Trots måsvingen finns det något som spökar med funktionen. När jag skriver ett inlägg tillåter den fortfarande rubriken att vara tom! :OO

Medlem sedan dec. 20025 483 inlägg
#5

Följande fungerar:

<script type="text/javascript">

function trim(str){
    return str.replace(/(^\s+)|(\s+$)/g, "");
}

function validateNewThread(obj) {
   var elms = obj.elements;

   if(trim(elms["forumsubject"].value).length != 0) {
       return true;
       } else {
       alert("Fyll i en rubrik");
       elms["forumsubject"].focus();
       return false;
       }
}

</script>

<form onsubmit="return validateNewThread(this)">
    <input type="text" name="forumsubject">
    <input type="submit">
</form>
Medlem sedan apr. 20041 597 inlägg
#6

Måste alla skripthänvisningar eller skript ligga inom <head></head>-delen i html-dokumentet? Jag får nämligen inte inte ovanstående kod att exekveras.

Som jag har det nu ligger följande kod utanför <head>-delen:

<script language="JavaScript" src="../inc/function.js"></script>
Medlem sedan apr. 20041 597 inlägg
#7

Fick det att fungera nu. Hade skrivit fel på ett tecken i str.replace-delen :r

Försökte klistra in en kopia av den första if-satsen för att kontrollera meddelandeformulärdelen också. Men det fungerade inte för när jag fyllt i en rubrik godtog koden bara det och skapade inlägget.

Nu kommer det ju upp en programruta. Kan man ändra titel på den på något smidigt sätt?

Medlem sedan dec. 20025 483 inlägg
#8

Nej, <script>-taggar behöver inte ligga inom <head>-delen. Däremot kan det ha betydelse om de ligger före eller efter den HTML-kod i dokumentet som skriptet manipulerar.

Exempel:

<body>
    <script>alert(document.forms["f"]);</script>
    <form name="f"></form>
</body>
Medlem sedan dec. 20025 483 inlägg
#9

Mig veterligen finns det inget standardiserat sätt att göra det på.

Medlem sedan apr. 20041 597 inlägg
#10

Hur gör jag för att kontrollera ytterligare ett formulär-input? Försökte klippa in en kopia av if-satsen nedaför den första och ändra på namnen osv. men det gick inget vidare. Funktionen släppte igenom ett tomt meddelandefält ändå...

Medlem sedan dec. 20025 483 inlägg
#11

Det är bara att fylla på med if-satser enligt nedan:

function validateNewThread(obj) {
    var elms = obj.elements;

    if(trim(elms["forumsubject"].value).length == 0) {
	alert("Fyll i en rubrik");
	elms["forumsubject"].focus();
	return false;
    }

    if (...){
	alert("...");
	elms["..."].focus();
	return false;
    }

    return true;
}
Medlem sedan apr. 20041 597 inlägg
#12

Tack. :) Är det bättre att bara ha ett return true på slutet?

Nu får jag en title på programrutan där det står [JavaScrip-Program]...går det att ändra till en egen text?

Medlem sedan dec. 20025 483 inlägg
#13

Du slipper ju en extra if-sats i och med det.

Som sagt, vad jag vet finns det inget standardiserat sätt att ändra den.

263 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)