Avatar billede artico Novice
10. oktober 2015 - 20:42 Der er 3 kommentarer og
1 løsning

Ajax

Jeg har flg. kode, den virker fint m.h.t. databaseforespørgsel, men jeg kan ikke få den til at validere emailen :-(....

Hvad gør jeg lige forkert ?


function isValidEmailAddress(emailAddress) {
    var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
    return pattern.test(emailAddress);
};

$(document).ready(function() {
    $("#email").keyup(function (e) {

var email = $(this).val();
if( isValidEmailAddress( email ) ) { $("#email-result").html(' det er sku OK!!'); }


  if(email.length < 6){
    $("#email-result").html(' er for kort');
    $("#join_button").attr("disabled", true);
  return;
}


    if(email.length >= 6){

            $("#email-result").html('');
            $.post('Webshop/username-checker.php', {'email':email}, function(data) {

            if(data == '1'){
            $("#submit").attr("disabled", false);
            $("#join_button").attr("disabled", false);
            $("#email-result").html(' er Ledigt');
            $('#email').css('border', '3px #2ecc71 solid');

            }else{
                $("#submit").attr("disabled", true);
                $("#join_button").attr("disabled", true);
                $("#email-result").html(' er optaget!');
                $('#email').css('border', '3px #c0392b solid');
            }
            });
          }  });
      });
Avatar billede Slater Ekspert
10. oktober 2015 - 22:51 #1
Der er ikke noget PHP i det spørgsmål, så Javascript ville nok være en bedre kategori.

Men er problemet i regex'et, eller er det et andet sted? Altså er problemet at du får en false ud der, selvom du mener du skriver en gyldig e-mail?

Så er jeg nødt til at spørge, hvorfor i alverden bruge et så bizart kompliceret regex til det? Jeg gider ikke engang selv forsøge at læse mig igennem og forstå det, men forstår du selv hvad det gør? Hvorfor ikke bare nøjes med noget simplere?
- Regex-validering af e-mail er alligevel kun for at advare folk, hvis de har skrevet noget helt forkert. Det kan ikke bruges til at validere om e-mailen er ægte. Der er sådan set ingen grund til at bruge noget mere kompliceret end f.eks. /.+@.+\..+/
Avatar billede artico Novice
11. oktober 2015 - 01:15 #2
Modtaget :-) Jeg har også kogt det ned til dette.. som dog fryser formularen.. så noget er stadig galt, har du et bud ?

$(document).ready(function() {
    $("#email").keyup(function (e) {

  var input=$(this);
    var re = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
    var is_email=re.test(input.val());

    if(is_email){

            $("#email-result").html('');
            $.post('Webshop/username-checker.php', {'email':email}, function(data) {

            if(data == '1'){
            $("#submit").attr("disabled", false);
            $("#join_button").attr("disabled", false);
            $("#email-result").html(' er Ledigt');
            $('#email').css('border', '3px #2ecc71 solid');

            }else{
                $("#submit").attr("disabled", true);
                $("#join_button").attr("disabled", true);
                $("#email-result").html(' er allerede registeret på en konto!');
                $('#email').css('border', '3px #c0392b solid');
            }
            });
          } else {
              $('#email').css('border', '3px #c0392b solid');
              $("#email-result").html(' er ikke korrekt');
          }
    });
  });
Avatar billede Slater Ekspert
11. oktober 2015 - 08:24 #3
Du mangler lige et backslash før det første punktum i dit regex, ellers virker det i hvert fald på min Firefox 41.
Avatar billede artico Novice
11. oktober 2015 - 12:43 #4
Fandt selv ud af det, løsningen var at der ikke blev sendt nogen emsil med til email-check.php, men det gør der nu:

$("#email").keyup(function (e) {
            var email = $(this).val();
            var input=$(this);
            var re = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
            var is_email=re.test(input.val());

              if(is_email){
                $("#email-result").html('');
                $.post('Webshop/email-check.php', {'email':email}, function(data) {

                  if(data == '1'){
                    $('#email').css('border', '3px #c0392b solid');
                    $("#email-result").html(' er i brug');
                  } else {
                  $('#email').css('border', '3px #2ecc71 solid');
                  $("#email-result").html(' er godkendt!');
                }
                  });
              } else {

                $('#email').css('border', '3px #c0392b solid');
                $("#email-result").html(' er ikke korrekt');

              }
                            });
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