Avatar billede limemedia Nybegynder
06. oktober 2000 - 00:50 Der er 12 kommentarer og
1 løsning

Universel form tester

Jeg har brug for et script der tager alle felter i en form og tester om de indeholder værdier. Alle felter er altid \"mandatory\", og vi snakker her både tekst, selects og checkboxe.

Findes et sådant script allerede der er færdigt ?


/ Lars
Avatar billede winkill Nybegynder
06. oktober 2000 - 00:56 #1
Der er et lige her...

For i = 1 To Request.Form.Count
    Cout Request.Form.Key(i) & \" : \" & Request.Form.Item(i) & \"<br>\" & vbCrLf
Next
Avatar billede winkill Nybegynder
06. oktober 2000 - 00:56 #2
Ups... here ya go

For i = 1 To Request.Form.Count
    Response.Write Request.Form.Key(i) & \" : \" & Request.Form.Item(i) & \"<br>\" & vbCrLf
Next
Avatar billede keysersoze Ekspert
06. oktober 2000 - 00:57 #3
ASP kan gøre det således:

If Request(\"felt1\")=\"\" Then
Response.Redirect \"tilbage.asp\"
End If
If Request(\"felt2\")=\"\" Then
Response.Redirect \"tilbage.asp\"
End If

men til javascript skulle dette virke:

<script Language=\"JavaScript\"><!--
function check_Form(Form)
{

  if (Form.txt.value == \"\")
  {
    alert(\"TExt felt ikke udfyldt\");
    Form.txt.focus();
    return (false);
  }

  if (Form.txt.value.length < 2)
  {
    alert(\"Der skal min være x karakter i feltet\");
    Form.txt.focus();
    return (false);
  }
  return (true);
}
//--></script>
<form method=\"POST\" action=\"eteller%20andet\" onsubmit=\"return check_Form(this)\" name=\"form\">
<textarea rows=\"2\" name=\"txt\" cols=\"20\"></textarea><input type=\"submit\" value=\"Submit\" name=\"B1\"><input type=\"reset\" value=\"Reset\" name=\"B2\">
</form>
Avatar billede keysersoze Ekspert
06. oktober 2000 - 00:58 #4
måske skal denne bare ikke med

if (Form.txt.value.length < 2)
  {
    alert(\"Der skal min være x karakter i feltet\");
    Form.txt.focus();
    return (false);
  }
 
men så har du da også den... ;o)
Avatar billede winkill Nybegynder
06. oktober 2000 - 01:04 #5
Ah crap, så ikke at det var JavaScript gruppen...

Undskylder mange gange...
Avatar billede limemedia Nybegynder
06. oktober 2000 - 01:08 #6
winkill >> :) nice try... det er nemt serverside, jeg snakker clientside

soze >> at tage længden af et TXT felt er nemt... jeg spørger efter en funktion der kan validere SAMTLIGE felter i en formular under ÉT kald... Om formen så indeholder tekst, select eller checkboxe er så udfordringen.

Kan det overhovedet lade sig gøre ?


/ Lars
Avatar billede keysersoze Ekspert
06. oktober 2000 - 01:13 #7
den var nok sværere - det kan nok godt lade sig gøre med kun tekst.. men nok ikke med en combination - det eneste jeg lige kan se (uden at være ekspert) er altså flere if-sætninger... :o/
Avatar billede limemedia Nybegynder
06. oktober 2000 - 01:26 #8
soze >> det er den nuværende løsning, men den er knap så smart med *MANGE* formularer... ellers må jeg løse den i PHP.
Avatar billede olebole Juniormester
06. oktober 2000 - 02:02 #9
<ole>
Lars, jeg er lige ved at gå til køjs, så jeg nøjes med at ridse princippet op - det kender jeg dig godt nok til at vide, burde være nok ;o)

Du tæller hele formen igennem med en for-løkke. Så spørger du til hvert element:

var which = document.formnavn.elments[i];
if (which.type==\"text\") {
  if (which.value==\"\") { alert(\'udfyld!\');return false; }
}
if (which.type==\"textarea\") {
  if (which.value==\"\") { alert(\'udfyld!\');return false; }
}
if (which.type==\"select\") {
  if (which.options[options.selectedIndex].value==\"\") { alert(\'v\\346lg!\');return false; }
}
...osv.

Checkbokse må tælles igennemfor sig selv og hvis man ikke finder en \'if(which.checked==\"true\")\', returneres \'false\'.
Det gælder også radios.

Håber det kan hjælpe.
/mvh
</bole>
Avatar billede olebole Juniormester
06. oktober 2000 - 02:04 #10
Måske nærmere:

if (which.type==\"select\") {
  if (which.options[options.selectedIndex].value==\"\" || which.options[options.selectedIndex].value==\"din_første_options_value\") { alert(\'v\\346lg!\');return false; }
}
Avatar billede limemedia Nybegynder
06. oktober 2000 - 12:54 #11
Det kunne være andre fik brug for mit reviderede script :

<SCRIPT LANGUAGE=\"JavaScript\">
<!--
    function checkForm (form) {
        for (i = 0; i < document.form.elements.length; i++) {
            var which = document.form.elements[i];
            var alertMsg = \"You must fill out all the mandatory fields\";

            if (which.type == \"text\") {
                if (which.value == \"\") {
                    alert(alertMsg);
                    which.focus();
                    return false;
                }
            } else if (which.type == \"textarea\") {
                  if (which.value == \"\") {
                    alert(alertMsg);
                    which.focus();
                    return false;
                }    
            } else if (which.type == \"select-one\") {
                if (which.options.selectedIndex == -1) {
                    alert(alertMsg);
                    which.focus();
                    return false;
                }
            } else if (which.type == \"select-multiple\") {
                if (which.options.selectedIndex == -1) {
                    alert(alertMsg);
                    which.focus();
                    return false;
                }
            }
        }
        return true;
    }
//-->
</SCRIPT>





<FORM ACTION=\"minaction.php\" name=\"form\" onSubmit=\"return checkForm(this);\">
<INPUT TYPE=\"text\" NAME=\"test1\"><BR>
<INPUT TYPE=\"text\" NAME=\"test2\"><BR>
<INPUT TYPE=\"text\" NAME=\"test3\"><BR>

<SELECT NAME=\"selecttest\" SIZE=\"1\">
    <OPTION VALUE=\"1\">1</OPTION>
    <OPTION VALUE=\"2\">2</OPTION>
    <OPTION VALUE=\"3\">3</OPTION>
    <OPTION VALUE=\"4\">4</OPTION>
    <OPTION VALUE=\"5\">5</OPTION>
</SELECT><BR>

<SELECT NAME=\"selecttest2\" SIZE=\"5\" MULTIPLE>
    <OPTION VALUE=\"1\">1</OPTION>
    <OPTION VALUE=\"2\">2</OPTION>
    <OPTION VALUE=\"3\">3</OPTION>
    <OPTION VALUE=\"4\">4</OPTION>
    <OPTION VALUE=\"5\">5</OPTION>
</SELECT><BR>

<TEXTAREA COLS=\"5\" ROWS=\"5\" NAME=\"textarea1\"></TEXTAREA>

<INPUT TYPE=\"submit\">

</FORM>
Avatar billede keysersoze Ekspert
06. oktober 2000 - 13:01 #12
ljweb >> det må jeg sgu sige; det er sjældent man ser en gøre sådan... det skal altid presses ud af andre brugere for at få fat i løste ting! - RESPEKT til ljweb ;o)
Avatar billede limemedia Nybegynder
06. oktober 2000 - 13:11 #13
soze >> du kan jo støtte mit initiativ -> http://www.eksperten.dk/spm/27866
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester