Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Mar 2009
    Posts
    8
    Thanks
    2
    Thanked 0 Times in 0 Posts

    Comparison in Javascript

    Hey,

    My form validation is almost ready, but there is still one thing with what I'm having troubles with. I need to check whether the people haven't filled in their username as there password.

    So I need to check whether wachtwoord(password in english) = gebruikersnaam (username in english). And if so an error message should be shown. However it doesn't work.

    Can anyone help me out with this probably 'easy' problem?

    Here are the functions that I use to check my gebruikersnaam (username) and wachtwoord(password):
    Code:
    function checkField(el) {
    	
    	if (el.id.toLowerCase() == 'gebruikersnaam') {
    		var gebruiker = el;
    		ray.getID(gebruiker.id+"_status").innerHTML = '' ;
    		if (gebruiker.value == null || gebruiker.value == '')
    			ray.showErrMsg('Gebruikersnaam: Het veld is leeg.',gebruiker.id+"_status");
    		else if (gebruiker.value.length < 2 )
    			ray.showErrMsg('Gebruikersnaam: Uw gebruikersnaam moet uit minimaal 2 tekens bestaan.',gebruiker.id+"_status");
    		else if (gebruiker.value.length > 16)
    			ray.showErrMsg('Gebruikersnaam: Uw gebruikersnaam mag niet meer dan 16 tekens bevatten.',gebruiker.id+"_status");
    		else if (!gebruiker.value.match(/^[a-z0-9\s]+$/i))
    			ray.showErrMsg('Gebruikersnaam: Enkel letters, cijfers en spaties zijn toelaten.',gebruiker.id+"_status");
    		else 
    			ray.showCheck(gebruiker.id+'_status');	
    	}
    	
    	if (el.id.toLowerCase() == 'wachtwoord') {
    		var wachtwoord = el;
    		ray.getID(wachtwoord.id+"_status").innerHTML = '' ;
    		if (wachtwoord.value == null || wachtwoord.value == '')
    			ray.showErrMsg('Wachtwoord: Het veld is leeg.',wachtwoord.id+"_status");
    		else if (wachtwoord.value.length < 8 )
    			ray.showErrMsg('Wachtwoord: Uw wachtwoord moet uit minimaal 8 tekens bestaan.',wachtwoord.id+"_status");
    		else if (wachtwoord.value.length > 20)
    			ray.showErrMsg('Wachtwoord: Uw wachtwoord mag niet meer dan 20 tekens bevatten.',wachtwoord.id+"_status");
    		else if (!wachtwoord.value.match(/^[a-zA-Z0-9]+$/))
    			ray.showErrMsg('Wachtwoord: Enkel letters en cijfers zijn toegelaten.',wachtwoord.id+"_status");
    This is where it goes wrong (the next two lines):
    		else if (wachtwoord.value == gebruiker.value)
    			ray.showErrMsg('Wachtwoord: Het opgegeven wachtwoord komt overeen met de gebruikersnaam, wat niet toegelaten is.',wachtwoord.id+"_status");
    		else 
    			ray.showCheck(wachtwoord.id+'_status');	
    	}

  • #2
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    17,731
    Thanks
    202
    Thanked 2,508 Times in 2,486 Posts
    It is not obvious to me what is wrong here, but

    if (el.id.toLowerCase() == 'wachtwoord') {
    var wachtwoord = el;

    It is not a good idea to assign a Javascript variable the same name as an HTML element.

    Put in some alerts and observe the outcome:-

    This is where it goes wrong (the next two lines):
    alert (gebruiker.value);
    alert (wachtwoord.value);


    The secret of success in life is honesty and fair dealing. If you can fake that, you've got it made. - Groucho Marx (1890 - 1977)

  • #3
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,020
    Thanks
    75
    Thanked 4,323 Times in 4,289 Posts
    When you get to that line, the variable gebruiker is *NOT* defined!!!

    Remember, that variable is ONLY defined if *THIS* code is executed:
    Code:
    	if (el.id.toLowerCase() == 'gebruikersnaam') {
    		var gebruiker = el;
    Then the field being checked is wachtwoord you don't bother to define the other variable!

    Easy fix:
    Code:
    		else if (wachtwoord.value == document.getElementById("gebruikersnaam").value)
    			ray.showErrMsg('Wachtwoord: Het opgegeven wachtwoord komt overeen met de gebruikersnaam, wat niet toegelaten is.',wachtwoord.id+"_status");
    This code seems awfully complicated for such a simple action, and I agree about not using the same name for a variable as you use for a form field name or id, but it *does* work if you make that change, I believe.
    Last edited by Old Pedant; 05-31-2009 at 07:50 AM. Reason: typos


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •