Avatar billede den-evil Nybegynder
01. februar 2008 - 11:48 Der er 16 kommentarer og
2 løsninger

hvorfor validerer mine email felter ikke imod hinanden?

Jeg får ingen fejl eller noget, og kan ik rigtig se hvad problemet er.... Help???

function validering_kraevet(field,alerttxt) {
    with(field)
{
    if(value==null||value==""){
        alert(alerttxt);
        return false;
    } else {
        return true;
    }
}
}

function validering_emails(field, field2, alerttxt) {
    with(field)

    alert("hej");
    if(field.value != field2.value){
        alert(alerttxt);
        return false;
    } else {
        return true;
    }
}
}

function valider_form(thisform){
    with(thisform)
    {

        if(validering_kraevet(Email, "Fill out email")==false){
            Email.focus();
            setClassName("Email", "error");
            Email.style.border="2px solid #ff0000";
            return false;
        }

        if(validering_kraevet(EmailRepeat, "Fill out email")==false){
            EmailRepeat.focus();
            setClassName("EmailRepeat", "error");
            EmailRepeat.style.border="2px solid #ff0000";
            return false;
        }
       

        if(validering_emails(EmailRepeat, Email, "Emails doesnt match")==false){
            EmailRepeat.focus();
            setClassName("EmailRepeat", "error");
            EmailRepeat.style.border="2px solid #ff0000";
            return false;
        }
       
    }
}
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 11:59 #1
Hvad mener du med:
    if(value==null||value==""){
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 12:02 #2
Jeg mener bare at værdien hvis feltet er der, kan ikke være null - men det skader ikke.

Det der måske kan være dit problem er 2 ting:

1) Hvordan kalder du valider_form?
2) Hvorfor returnerer du ikke true, fra valider_form, hvis alt går godt?
Avatar billede den-evil Nybegynder
01. februar 2008 - 12:06 #3
Det er ikke validering_kraever jeg bruger til at valider email adresserne mod hinanden, men derimod :

function validering_emails(field, field2, alerttxt) {
    with(field)

    alert("hej");
    if(field.value != field2.value){
        alert(alerttxt);
        return false;
    } else {
        return true;
    }
}
}
Avatar billede crazysnap Seniormester
01. februar 2008 - 12:34 #4
Har du en 'with' function et eller andet sted også?

For jeg har aldrig set 'with' før i javascript. Prøv at fjern dit with(field) statement og se om det hjælper. Kan ikke rigtig se der skulle være andet galt med din valdering_emails funktion.

Mvh.
CS
Avatar billede w13 Novice
01. februar 2008 - 13:41 #5
Crazysnap>> Widt-metoden eksisterer i JavaScript, men den performer så dårligt, at den stort set aldrig bliver brugt. Folk lægger som regel bare lange referencer til objecter i små variabler i stedet - det fungerer meget bedre.
Avatar billede w13 Novice
01. februar 2008 - 13:45 #6
*With, sæføli ^^
Avatar billede crazysnap Seniormester
01. februar 2008 - 13:50 #7
Jeg forstår stadig ikke helt hvad den bruges til? Kan du forklare hvad han bruger den til i validering_emails metoden?
Sagt på en anden måde: Hvordan kan man korte lange referencer til objekter ned ved brug af 'with'? Og hvad hjælper det at bruge det i validering_emails-metoden?  :)
Avatar billede w13 Novice
01. februar 2008 - 13:53 #8
I funktionen validering_emails() bruges with-funktionaliteten slet ikke, så den er helt overflødig der. Men her er et simpelt eksempel:

with(document.getElementById('div1')){
  style.backgroundColor="#f00";
  firstChild.nodeValue("hello");
}

I stedet for:

  document.getElementById('div1').style.backgroundColor="#f00";
  document.getElementById('div1').firstChild.nodeValue("hello");
Avatar billede crazysnap Seniormester
01. februar 2008 - 14:03 #9
Ja ok, så har jeg forstået det rigtigt. Kunne bare ikke se udfra validering_emails om min formodning var korrekt, for så ville det være fuldstændig overflødigt at bruge den i metoden (som du selv påpeger).

Men kunne 'with' så ikke være den der skaber problemer for den-evil i hans email-validerings metode? Ville if-sætningen med 'with' ikke være (oversat til ikke at bruge 'with'):

if(field.field.value != field.field2.value)

Eller kan 'with' automatisk finde ud af at håndtere denne situation?
Avatar billede den-evil Nybegynder
01. februar 2008 - 14:19 #10
Ok, i har tabt mig - også omkring det der with... Brugte det kun ud fra det W3 skrev på:

http://www.w3schools.com/js/js_form_validation.asp
Avatar billede crazysnap Seniormester
01. februar 2008 - 14:29 #11
Ja, men de eksempler på w3 ser også rigtige ud. Der valideres nemlig kun på ét felt, så i stedet for f.eks:

field.value = "test";

kan man bruge with og i stedet skrive:

with(field)
{
    value = "test";
}



Men skal man checke på to felter i samme 'with', kunne jeg godt forestille mig det gik galt. Så prøv at fjern 'with' for email validerings metoden så du i stedet får:

function validering_emails(field, field2, alerttxt) {
    alert("hej");
    if(field.value != field2.value){
        alert(alerttxt);
        return false;
    } else {
        return true;
    }
}

Det burde virke.

Din validering_kraevet-metode ser fin ud, for der checker du kun på ét felt under samme 'with'. :)


/CS
Avatar billede w13 Novice
01. februar 2008 - 14:40 #12
Det kunne du godt have ret i, jo.

Og der behøves ikke engang else-delen:

function validering_emails(field, field2, alerttxt) {
    alert("hej");
    if(field.value != field2.value){
        alert(alerttxt);
        return false;
    }
    return true
}
Avatar billede w13 Novice
01. april 2008 - 12:12 #13
Lukketid?
Avatar billede w13 Novice
28. april 2008 - 15:46 #14
?
Avatar billede den-evil Nybegynder
28. april 2008 - 19:54 #15
Jeps, my bad - mangler bare et svar?
Avatar billede w13 Novice
28. april 2008 - 20:04 #16
Her er et fra mig, hvis du har ku' bruge min hjælp.
Avatar billede erikjacobsen Ekspert
28. april 2008 - 20:17 #17
Ingen point til mig, tak
Avatar billede crazysnap Seniormester
29. april 2008 - 09:15 #18
Og et fra mig også så. :)
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