Avatar billede arnbjerg Nybegynder
07. december 2012 - 21:10 Der er 14 kommentarer og
1 løsning

Udfyldte felter i formular

Hejsa

Jeg har brug for hjælp til en formular, hvor jeg har et sæt radioknapper og en række tekstbokse. Jeg vil gerne, at brugeren skal markere "ja" i radioknapperne eller skrive noget i et af tekstfelterne. Altså noget i retning af radioknap: Nej, jeg vil ikke kontaktes, men kontakt xxx i stedet. Eller; ja, jeg vil gerne kontaktes og dermed er det tilladt at efterlade tekstfeltet tomt. Sådan at det ikke er tilladt, at der ikke er en kontaktperson. Giver det mening? Håber nogen kan hjælpe.
Avatar billede olebole Juniormester
07. december 2012 - 21:22 #1
<ole>

Havde du tænkt dig én eller to knapper ('Ja', 'Nej') pr. felt? Og hvad er egentlig begrundelsen for radioknapperne?

/mvh
</bole>
Avatar billede arnbjerg Nybegynder
07. december 2012 - 21:25 #2
Ja, der er to radioknapper. En med "Ja, jeg må kontaktes" og en med "Nej, jeg må ikke kontaktes". Hvis brugeren vælger nej, skal han tvinges til at udfylde mindst et af felterne med en alternativ kontaktperson. Det må ikke forekomme, at der ikke er en kontaktperson.
Avatar billede arnbjerg Nybegynder
07. december 2012 - 21:50 #3
Og argumentet for to radioknapper er, at brugeren godt kan være kontaktperson, samtidig med, at han tilføjer op til 3 andre kontakpersoner.
Avatar billede olebole Juniormester
07. december 2012 - 21:56 #4
Så kan du prøve dette:

<script type="text/javascript">
function validate(elmFrm) {
    var aRadios = elmFrm.elements["contact[]"];
    for (var i=0,j=aRadios.length; i<j; i++) {
        if (aRadios[i].value==="yes" && aRadios[i].checked) return true;
    }
    var aTexts = elmFrm.elements["address[]"];
    for (var i=0,j=aTexts.length; i<j; i++) {
        if (aTexts[i].value!=="") return true
    }
    alert("Fejl")
    return false;
}
</script>

<form action="" onsubmit="return validate(this)">
    <label>Ja, jeg må kontaktes <input type="radio" name="contact[]" value="yes" checked></label>
    <label>Nej, jeg vil ikke kontaktes <input type="radio" name="contact[]" value="no"></label>
    <div>
        <input name="address[]" type="text">
        <input name="address[]" type="text">
        <input name="address[]" type="text">
        <input name="address[]" type="text">
    </div>
    <p><button type="submit">Send</button></p>
</form>
Avatar billede arnbjerg Nybegynder
07. december 2012 - 22:06 #5
Amazing! Det ser ud til at virke, så nu skal jeg bare finpudse det lidt :-)
Tusind tak for hjælpen og god weekend!
Og læg lige et svar.
Avatar billede olebole Juniormester
07. december 2012 - 22:15 #6
Selvtak, men jeg samler ikke point. Du lægger bare et svar og accepterer det, så tråden lukkes  =)
Avatar billede arnbjerg Nybegynder
07. december 2012 - 22:18 #7
Jamen, så siger jeg da endnu engang tak for hjælpen! ;-)
Avatar billede arnbjerg Nybegynder
10. december 2012 - 10:04 #8
Hej olebole
Jeg håber du kan hjælpe mig, for jeg har et problem, som jeg ikke aner hvordan jeg løser.

Min formular indeholder flere felter og jeg sender indholdet videre til en ny side, hvor brugeren skal bekræfte og derefter sendes indholdet videre i en mail til mig. Scriptet, som du lavede, fejler når jeg sætter en action på og jeg ved ikke hvordan jeg løser problemet... Kan du hjælpe?
Avatar billede arnbjerg Nybegynder
10. december 2012 - 13:32 #9
Jeg kæmper og kæmper og det er lykkedes mig at få det til at virke med en action. Nu kan jeg bare ikke få nedenstående til at virke... kan du hjælpe?

<script type="text/javascript">

function validate(form) {
    var aRadios = form.elements["contact[]"];
    for (var i=0,j=aRadios.length; i<j; i++) {
        if (aRadios[i].value==="yes" && aRadios[i].checked) return true;
    }
    var aTexts = form.elements["address[]"];
    for (var i=0,j=aTexts.length; i<j; i++) {
        if (aTexts[i].value!=="") return true
    }
    alert("Du skal angive minimim én kontaktperson.")
    return false;
};

function validate(form)
{
var x=document.forms["form"]["firma"].value;
if (x==null || x=="")
  {
  alert("Feltet Firma skal udfyldes");
  return false;
  }
}

</script>
Avatar billede olebole Juniormester
10. december 2012 - 15:19 #10
Ja, det med action må skyldes noget andet - ikke scriptet i #4  =)

Hvad valideringsfunktion angår, så kan du ikke have flere funktioner med det samme navn. Du bør også give din form et andet navn end 'form' - ligesom du generelt bør undlade at bruge ordet 'form' (eller andre ord, der betyder noget specielt) som variabelnavne i dine scripts.

Prøv dette i stedet:

<script type="text/javascript">
function validate(frm) {
    var bFound = false,
    aRadios = frm.elements["contact[]"];
    for (var i=0,j=aRadios.length; i<j; i++) {
        if (aRadios[i].value==="yes" && aRadios[i].checked) bFound = true;
    }
    if (!bFound) {
        var aTexts = frm.elements["address[]"];
        for (var i=0,j=aTexts.length; i<j; i++) {
            if (aTexts[i].value!=="") bFound = true;
        }
    }
    if (!bFound) {
        alert("Du skal angive minimim én kontaktperson.")
        return false;
    }
    if (frm.firma.value==="") {
        alert("Feltet Firma skal udfyldes");
        frm.firma.focus();
        return false;
    }

    return true;
}
</script>

Du kan altid udvide funktionen med flere felter ved at dubblere det, jeg har markeret med rødt - og ændre feltnavn, besked, etc.
Avatar billede arnbjerg Nybegynder
10. december 2012 - 15:55 #11
SUPER! Endnu engang tusind tusind tak!
Avatar billede arnbjerg Nybegynder
10. december 2012 - 16:08 #12
Hmmm. Ikke helt alligevel. Nu kan ikke ikke vælge Ja til at jeg stadig er kontaktperson. Jeg skal udfylde et af felterne. Snøft!
Jeg har ændret navnene, så det nu ser sådan ud:
<script type="text/javascript">
function validate(tilmeld) {
    var bFound = false,
    aRadios = tilmeld.elements["contact"];
    for (var i=0,j=aRadios.length; i<j; i++) {
        if (aRadios[i].value==="yes" && aRadios[i].checked) bFound = true;
    }
    if (!bFound) {
        var aTexts = tilmeld.elements["address[]"];
        for (var i=0,j=aTexts.length; i<j; i++) {
            if (aTexts[i].value!=="") bFound = true;
        }
    }
    if (!bFound) {
        alert("Du skal angive minimim én kontaktperson.")
        return false;
    }
    if (tilmeld.firma.value==="") {
        alert("Feltet Firma skal udfyldes");
        tilmeld.firma.focus();
        return false;
    }
    return true;
}
</script>
Avatar billede olebole Juniormester
10. december 2012 - 16:17 #13
Hos mig virker det fint  =)

<script type="text/javascript">
function validate(frm) {
    var bFound = false,
    aRadios = frm.elements["contact[]"];
    for (var i=0,j=aRadios.length; i<j; i++) {
        if (aRadios[i].value==="yes" && aRadios[i].checked) bFound = true;
    }
    if (!bFound) {
        var aTexts = frm.elements["address[]"];
        for (var i=0,j=aTexts.length; i<j; i++) {
            if (aTexts[i].value!=="") bFound = true;
        }
    }
    if (!bFound) {
        alert("Du skal angive minimim én kontaktperson.")
        return false;
    }
    if (frm.firma.value==="") {
        alert("Feltet Firma skal udfyldes");
        frm.firma.focus();
        return false;
    }
    return true;
}
</script>

<form action="" onsubmit="return validate(this)">
    <label>Ja, jeg må kontaktes <input type="radio" name="contact[]" value="yes" checked></label>
    <label>Nej, jeg vil ikke kontaktes <input type="radio" name="contact[]" value="no"></label>
    <div>
        <input name="address[]" type="text">
        <input name="address[]" type="text">
        <input name="address[]" type="text">
        <input name="address[]" type="text">
    </div>
    <label>Firma: <input name="firma" type="text"></label>
    <p><button type="submit">Send</button></p>
</form>
Avatar billede arnbjerg Nybegynder
10. december 2012 - 16:22 #14
Ja, ved du hvad, det gør det faktisk også hos mig - altså når jeg kun bruger dit script. Jeg må have noget der konflikter, så jeg kigger på det i morgen, hvor jeg har lidt bedre tid.
Jeg takker endnu engang og ønsker dig en dejlig aften og jul :-D
Avatar billede olebole Juniormester
10. december 2012 - 16:34 #15
Det gør du bare - og i lige måde *<|:o) ... Ho-ho-ho
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