webForumDet fria alternativet

Pop-up om formulär inte är komplett.

JavaScript

9 svar · 336 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Hur skriver man för att kontrollera om ett formulär är ifyllt?
Sökte bland javascripten här men blev inte klokare. :r

Bland annat har jag detta formulär där jag vill kolla om namn, och meddelande är ifyllda.

<form action="addmess.php" method="post" name="NewMess">
	    <table width="100%" border="0" cellspacing="3" cellpadding="3">
          <tr> 
            <td><font color="#<?=$rad['gbfontcolor'] ?>" size="<?=$rad['gbfontsize'] ?>" face="<?=$rad['gbfont'] ?>">Namn:</font></td>
            <td><font color="#<?=$rad['gbfontcolor'] ?>" size="<?=$rad['gbfontsize'] ?>" face="<?=$rad['gbfont'] ?>">E-mail:</font></td>
          </tr>
          <tr> 
            <td><input name="gbmname" type="text" maxlength="50"></td>
            <td><input name="gbmmail" type="text" maxlength="50"></td>
          </tr>
          <tr> 
            <td><font color="#<?=$rad['gbfontcolor'] ?>" size="<?=$rad['gbfontsize'] ?>" face="<?=$rad['gbfont'] ?>">Homepage:</font></td>
            <td><font color="#<?=$rad['gbfontcolor'] ?>" size="<?=$rad['gbfontsize'] ?>" face="<?=$rad['gbfont'] ?>">City 
              or Country:</font></td>
          </tr>
          <tr> 
            <td><input name="gbmurl" type="text" maxlength="100"></td>
            <td><input name="gbmcity" type="text" maxlength="50"></td>
          </tr>
          <tr> 
            <td colspan="2"><textarea name="gbmess" cols="40" rows="6"></textarea></td>
          </tr>
          <tr> 
            <td colspan="2"><input type="submit" name="NewMess" value="Send"> <input name="Clearform" type="reset" id="Clearform" value="Clear"></td>
          </tr>
        </table>
	  </form></td>

Vill någon förklara eller göra ett exempel?

Medlem sedan sep. 20021 655 inlägg
#2

Ett exempel:

<script type="text/javascript">
function validateForm(theForm){

  var regexp = /^\s*$/;

  if(regexp.test(theForm.elements['gbmname'].value)){
    alert("Fyll i ett namn");
    return false;
  }

  if(regexp.test(theForm.elements['gbmess'].value)){
    alert("Skriv ett meddelande");
  }

  return true;
}
</script>

...

<form action="addmess.php" method="post" name="NewMess" onsubmit="return validateForm(this)">

När formuläret skickas iväg (onsubmit) returneras validateForm(), med formuläret som argument (this).

validateForm() tittar m.h.a. en regexp efter om gbmname bara innehåller "tomma" tecken (blanksteg, radbrytning, tabb, vertikal tabb och kanske något annat också) eller inget tecken alls, och om det är fallet säger scriptet till genom en alert-ruta, och false returneras (formuläret kommer inte att skickas iväg). Om namnet går genom kontrollen fortsätter funktionen med gästboksmeddelandet. En likadan kontroll som tidigare görs, och om även gästboksmeddelandet går igenom returneras true, d.v.s. formuläret skickas iväg.

Medlem sedan juni 20006 031 inlägg
#3

Tackar, precis vad jag ville ha! :birp

Fick lägga till return false; efter andra alerten så formuläret inte postades innan man kompletterat formuläret.

Medlem sedan juni 20006 031 inlägg
#4

Tillbaks igen. :e

Den här gången har jag ett annat formulär, men gillade dectcap's lösning så bra, så jag vill använda den igen.
Men nu är det så att jag har några radiobuttons som ska kollas också. Hur gör jag för att komplettera scriptet så den kollar att någon av dom är ibockad?

Medlem sedan feb. 2003774 inlägg
#5

För att kolla om en checkbox e icheckad

if(document.forms["formname"].checkboxName.checked)
{

}
Medlem sedan juni 20006 031 inlägg
#6

Vad ska jag byta ut i ditt förslag?
Formuläret heter Intresse och radiobutton heter foretag

Testade med

if(document.forms["Intresse"].foretag.checked)
{
alert("Du måste kryssa för om det gäller företag eller privat!");
return false;
}

Men det funkade inte.

Medlem sedan feb. 2003774 inlägg
#7

Sorry, trodde du menade en checkbox, om det är radiobuttons måste du loopa dem o kolla om någon är icheckad.

var form = document.forms["Intresse"];
var iCheckad = false;

for(var i=0; i<Intresse.foretag.length;i++)
{
	if(Intresse.foretag[i].checked) iCheckad = true;
}

if(!iCheckad) alert("felmeddelande");
Medlem sedan sep. 20021 655 inlägg
#8

Det verkar dumt att aldrig använda variablen form :)

var formfield = document.forms["Intresse"].elements["foretag"];
var iCheckad = false;

for(var i=0; i<formfield.length;i++)
{
	if(formfield[i].checked) iCheckad = true;
}

if(!iCheckad) alert("felmeddelande");
Medlem sedan juni 20006 031 inlägg
#9

På vilket sätt ska den ena vara bättre än den andra?

Medlem sedan sep. 20021 655 inlägg
#10

Vad jag menade var att PepeJeria sätter variabeln form till formuläret, men sedan använde han inte den.

Jag gick ett steg längre, och satte variabeln formfield till att inkludera alla radioknappar (foretag).

272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)