script komt niet in else-deel

Status
Niet open voor verdere reacties.

janbe63

Gebruiker
Lid geworden
21 okt 2007
Berichten
64
Beste

Ik heb een kleine testpagina gemaakt, maar om de een of andere reden werkt het niet

Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<meta name="author" content="janbe" />
    <link rel="stylesheet" type="text/css" href="css/styles.css" />
	<title>Untitled 2</title>

<script src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">

  $(document).ready(function() {  

  $('#box5 #button1').click(function() {
	alert('ok2');

    email1 = $('#box5 #reg_email').val();
    alert((email1));
    var atpos=email1.indexOf("@");
    var dotpos=email1.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
      {
         alert("Not a valid e-mail address");
         return false;
      }
    else
    {  
      alert('goed');
      return false;
    }
    });

});
</script>

</head>

<body>
   <div id="box5">
     Email: <input id="reg_email" type="text" name="email" value="jan"/>
     <button id="button1" >test4</button>
   </div>
</body>
</html>

als ik nu op de button test4 klik (de value is jan) dan krijg ik idd de 3x alert-box, met als laatste -not a valid e-mail adress-. Als ik echter jan@no.nl in de input zet, krijg ik 2x alertbox (ok2 en jan@no.nl) vervolgens niets meer (geen alertbox met goed).
Waar zit de fout??

Jan
 
Wat is x.length ? mogelijk trip je ergens een compiler error en gaat je script gewoon stilletjes dood.
 
Dank je, had het script omgezet met andere var (beter voor de naam) en "x" verandert in email1, x.length verandert in email1.length (zoals ook de boeding was) en nu werkt het. Wat kan een mens soms blind staren.

Jan
 
O, toch niet, geloof ik.
Als je als dotpos+2>=email1.length voorwaarde zet, dan komen ook mailadressen er door als "jan@no.eenhelegrote".

Wordt niet bedoeld: email1.length>=dotpos+5?

Dan wordt gecontroleerd of de domeinnaam niet langer is dan 3 tekens (zodat .com wel kan); bij de dotpos+5 is het: max. 3 voor de domeinnaam, 1 voor het dotje zelf, en nog 1 erbij vanwege het javascript-begin met 0 ipv 1.



(En voor de zekerheid nog even: los ervan dat dit een clientside controle is, die met uitzetten van javascript valt te omzeilen; dit kan alleen een invulhulp zijn, terwijl de echte veilige controle serverside moet gebeuren met php of een ander script waar een boosaardige invuller niet bij kan komen.)

Met vriendelijke groet,
CSShunter
 
@CSS waarom mag de TLD niet langer zijn dan 3? .mobi .name .travel zijn allemaal valide TLD's.

Overigens is een regex mogelijk een meer effectieve methode om dit soort dingen te controleren. 'jan@.weg' komt namelijk ook door deze validatie. Maar goed dat is weer geneuzel buitenom :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan