验证电子邮件语法/格式的功能

时间:2015-02-22 00:59:31

标签: javascript php forms email email-validation

这应该是一个非常简单的函数,可以在我的PHP代码中实现

但是,出于某种原因,我无法让它发挥作用。

我正在为我的电子邮件属性创建两个函数:

第一个函数应该验证电子邮件的语法/格式,并确保它是正确的

第二个功能应该比较两个电子邮件字段(第一个字段是电子邮件,第二个字段是"确认电子邮件)。如果用户输入两封不同的电子邮件,他将收到错误。

以下是两个函数(javascript):

function validateEmail() {
    var email = document.getElementById("email").value
    if (!filter_var(email, FILTER_VALIDATE_EMAIL))
    {
        alert("You have entered an invalid email address !");
        return false;
    }
    return true;
}


function confirmEmail() {
    var email = document.getElementById("email").value
    var email2 = document.getElementById("email2").value
    if (email != email2) {
        alert('The email addresses you entered do not match !');
        return false;
    }
    return true;
}

奇怪的是:第二个功能完美无缺。但是,第一个不是。

对于第二个函数,我在表单中添加了以下属性: onSubmit =" return confirmEmail()"

对于第一个功能,我没有IDEA做什么(((

我尝试将其添加到表单中: onSubmit =" return confirmEmail()&& validateEmail()"

但是,没有运气。

其次,我尝试将第一个函数添加到电子邮件属性本身,格式为:

仍然无法工作。

所以,我决定尝试" onkeyup "

(实际上,这有点傻;因为,这意味着:该功能会在用户开始输入电子邮件字段时触发。这是无稽之谈。该功能应该只能起作用用户输入电子邮件后 ,然后转到表单中的下一个字段)

无论如何,由于JavaScript不起作用,我决定尝试简单的PHP。

我在google上发现了这个:

<?php

$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $emailErr = "Invalid email format";
}

?>

并且仍然无法正常工作。我不知道我做错了什么。

(a)我是否错误地调用了Javascript? (b)我在某个地方使用PHP代码我不应该使用它吗?

总而言之,我感到茫然。

更新:

请忽略我在JavaScript函数中编写的PHP废话

这是一个错误。

这是validateEmail的实际JS函数:

     function validateEmail() { 
      var email = document.getElementById("email").value  
      var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9] 
                   {2,4})+$/;;
     if (email.val() == '' || !filter.test(email.val()))
     {
     alert('You have entered an invalid email address !!');
     email.focus();
     return false; }
     return true; }

而且,虽然我们在讨论这个话题,但也许我应该进一步阐述。

早些时候,我创建了第三个电子邮件功能...........以确定输入的电子邮件是否已存在于MySQL数据库中。

这是我使用的功能:

    <SCRIPT type="text/javascript">

    $(document).ready(function() {  

   var min_chars = 4;  

    var characters_error = 'You must enter a minimum of 4 characters!';   
    var checking_email = 'Checking Email Validity....';

$('#email').keyup(function(){    
    //run the character number check  
    if($('#email').val().length < 4) {  

        $('#email_availability_result').html(characters_error);  }
        else{  

        $('#email_availability_result').html(checking_email);  
        check_email();  
      }  
      });
      });  


      //function to check email AVAILABILITY in database

      function check_email(){  
           var email = $('#email').val(); 
           var button_check_email=true;

     //use ajax to run the check  
     $.post("check.php", { email: email },  
     function(email_result){  
        //if the result is 1  
        if(email_result == 1){  
            //show that the email is available  
            button_check_email=false; 
            document.getElementById("submit").disabled = false;
            $('#email_availability_result').html('that email is available');  
        }else{  

            button_check_email=true; 
            document.getElementById("submit").disabled = true;
            $('#email_availability_result').html('Email address [' + email + 
                          '] is already registered in our database.');
             }  
             });  
             }  
            </SCRIPT>

这个脚本也很完美。

然而,脚本的第一部分是浪费时间。

无需插入用于计算&#34;字符数量的函数&#34;

(HTML提供&#34; minlength&#34;数据值属性)

所以,我需要做的就是彻底删除那个部分,并以某种方式用更有用的东西替换它............例如:检查电子邮件地址的有效性。

麻烦的是:我试过了,但只搞砸了代码))))

1 个答案:

答案 0 :(得分:0)

您在javascript代码中调用filter_var。 Filter_var是一个PHP函数,javascript一无所知。

您可以直接在html5的html中进行电子邮件验证。在输入上,输入type =&#34; email&#34;并添加输入所需。这将强制输入为电子邮件。

<input type="email" required  ...

如果你想使用JS,这是一个愚蠢的实现:

function validateEmail() {
    var email = document.getElementById("email").value;
    if (email.indexOf('@') > email.indexOf('.') > email.length)
    {
        return true;
    }
    alert("You have entered an invalid email address !");
    return false;
}