Avatar billede ravnkilde Nybegynder
18. august 2008 - 13:26 Der er 6 kommentarer og
2 løsninger

Validering af form

Jeg har en form, hvor brugerne indtaster data. Jeg har dog brug for at brugeren kan submitte formen, hvis feltet "OrderAmount3" er 0. Det er et felt, der automatisk beregnes via et seperat script.

Mit form-valideringsscript ses nedenfor. Som sagt skal det være muligt at submitte formen, hvis "OrderAmount3"-feltet er 0. Lige nu skal brugeren vælge betalingsløsning (kort el. bank) selvom købet er 0 for at kan submitte.

Kan nogle hjælpe med at få rettet. Pft.


--- script ---

// JavaScript Document
function isFilled(element)
{
    if(element.value=="")
    {
        return false;
    }
    else
    {
        return true;
    }
}
function isReady(form)
{
    if(isFilled(form.Navn)==false)
    {
    alert("Venligst udfyld Navn");
    form.Navn.focus();
    return false;
    }
    if (!form.Email.value.match(/^.*@\w[\w\.-]*\.[a-z]{2,6}$/)) {
    alert("Ikke gyldig E-mail adresse! Venligst indtast igen");
    form.Email.focus();
    return false;
    }
    if(isFilled(form.Medlemmer)==false)
    {
    alert("Venligst vælg antal medlemmer");
    form.Medlemmer.focus();
    return false;
    }
    if(isFilled(form.Quantity1)==false)
    {
    alert("Venligst vælg antal ikke-medlemmer");
    form.Quantity1.focus();
    return false;
    }
    if(isFilled(form.Quantity2)==false)
    {
    alert("Venligst vælg antal frokost");
    form.Quantity2.focus();
    return false;
    }
    if(!document.form.payment_selected[0].checked && !document.form.payment_selected[1].checked)
    {
    alert("Venligst vælg betalingsløsning");
    return false;
    }
    return true;
}
Avatar billede w13 Novice
18. august 2008 - 13:37 #1
Måske:

// JavaScript Document
function isFilled(element)
{
    if(element.value=="")
    {
        return false;
    }
    else
    {
        return true;
    }
}
function isReady(form)
{
    if(isFilled(form.Navn)==false)
    {
    alert("Venligst udfyld Navn");
    form.Navn.focus();
    return false;
    }
    if (!form.Email.value.match(/^.*@\w[\w\.-]*\.[a-z]{2,6}$/)) {
    alert("Ikke gyldig E-mail adresse! Venligst indtast igen");
    form.Email.focus();
    return false;
    }
    if(isFilled(form.Medlemmer)==false)
    {
    alert("Venligst vælg antal medlemmer");
    form.Medlemmer.focus();
    return false;
    }
    if(isFilled(form.Quantity1)==false)
    {
    alert("Venligst vælg antal ikke-medlemmer");
    form.Quantity1.focus();
    return false;
    }
    if(isFilled(form.Quantity2)==false)
    {
    alert("Venligst vælg antal frokost");
    form.Quantity2.focus();
    return false;
    }
    if(!document.form.payment_selected[0].checked && !document.form.payment_selected[1].checked)
    {
    alert("Venligst vælg betalingsløsning");
    return false;
    }
    if(document.form.OrderAmount3.value!="0"){
    alert("Der skal stå 0 i OrderAmount3!");
    return false;
    }

Forudsat at dit OrderAmount3-felt er et input-tekstfelt.

Kan det virkelig være rigtigt, at der skal stå 0, for at man kan submitte? Er det ikke, hvis der _ikke_ står 0, at den skal?
    return true;
}
Avatar billede ravnkilde Nybegynder
18. august 2008 - 13:48 #2
OrderAmount3 er et input tekstfelt og default-værdien er 0, men skifter i forhold til hvad der bestilles. Et andet script beregner værdien. Hvis der står 0 i dette felt, skal brugeren ikke promptes for valg af betalingsløsning (bank eller kort) og skal kunne submitte. Det var det jeg mente.
Avatar billede w13 Novice
18. august 2008 - 13:55 #3
Så prøv:

// JavaScript Document
function isFilled(element)
{
    if(element.value=="")
    {
        return false;
    }
    else
    {
        return true;
    }
}
function isReady(form)
{
    if(isFilled(form.Navn)==false)
    {
    alert("Venligst udfyld Navn");
    form.Navn.focus();
    return false;
    }
    if (!form.Email.value.match(/^.*@\w[\w\.-]*\.[a-z]{2,6}$/)) {
    alert("Ikke gyldig E-mail adresse! Venligst indtast igen");
    form.Email.focus();
    return false;
    }
    if(isFilled(form.Medlemmer)==false)
    {
    alert("Venligst vælg antal medlemmer");
    form.Medlemmer.focus();
    return false;
    }
    if(isFilled(form.Quantity1)==false)
    {
    alert("Venligst vælg antal ikke-medlemmer");
    form.Quantity1.focus();
    return false;
    }
    if(isFilled(form.Quantity2)==false)
    {
    alert("Venligst vælg antal frokost");
    form.Quantity2.focus();
    return false;
    }
    if(document.form.OrderAmount3.value=="0"){
        if(!document.form.payment_selected[0].checked && !document.form.payment_selected[1].checked)
        {
        alert("Venligst vælg betalingsløsning");
        return false;
        }
    }
}
Avatar billede ravnkilde Nybegynder
18. august 2008 - 14:17 #4
Jeg bliver prompted for valg af betalingsløsning, selvom OrderAmount3 har værdien 0. Det skal jeg ikke. Kun hvis feltet har en anden værdi end 0, skal jeg promptes for valg af betalingsløsning.
Avatar billede w13 Novice
18. august 2008 - 14:27 #5
Nå ja. Ret:

    if(document.form.OrderAmount3.value=="0"){
        if(!document.form.payment_selected[0].checked && !document.form.payment_selected[1].checked)
        {
        alert("Venligst vælg betalingsløsning");
        return false;
        }
    }

til:

    if(document.form.OrderAmount3.value!="0"){
        if(!document.form.payment_selected[0].checked && !document.form.payment_selected[1].checked)
        {
        alert("Venligst vælg betalingsløsning");
        return false;
        }
    }
Avatar billede ravnkilde Nybegynder
18. august 2008 - 16:14 #6
virker w13, men forklar lige ="0". Jeg troede det skulle være noget med at hvis feltet var = 0, så spring over, ellers propmt for betalingsløsning - men det er måske også det den gør?
Avatar billede w13 Novice
18. august 2008 - 16:18 #7
I linjen:
if(document.form.OrderAmount3.value!="0"){
tjekkes med != hvilket betyder "ikke lig med", hvor "lig med" skrives ==
Avatar billede w13 Novice
18. august 2008 - 16:18 #8
Og tak for point! :)
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