2015-02-22 5 views
-2

Это должно быть очень простая функция для реализации в моем PHP кодФункция для проверки электронной почты синтаксис/frmat

Но, по некоторым причинам, я не могу заставить его работать.

Я создаю две функции для моего атрибута электронной почты:

первая функция должна проверить синтаксис/формат электронной почты, и убедиться, что это правильно

Вторая функция должна затем сравнить два электронной почты поля (первое поле электронной почты, второе поле «подтвердить адрес электронной почты) Если пользователь вводит два различных сообщения электронной почты, он получит ошибку

Вот эти две функции (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 = «возвращение Confirmemail()»

Для первой функции, я понятия не имею, что делать ((((

Я пытался добавить его в форму также: onSubmit = "возвращение Confirmemail() & & validateEmail()"

Но не повезло

0123.

Во-вторых, я пытался добавить первую функцию к самому атрибута электронной почты в виде:

Тем не менее не работает.

Итак, я решил попробовать «OnKeyUp»

(На самом деле, это немного глупо, потому что, это означает, что: функция срабатывает в тот момент, пользователь начинает вводить в электронную почту поле. Что это нонсенс. функция должна работать только после пользователь имеет вход в электронную почту, и перешел к следующему полю в форме)

во всяком случае, так как JavaScript не работал, я решил попробовать простой PHP ,

Я нашел это на Google:

<?php 

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

?> 

И, по-прежнему не работает. Я понятия не имею, что я делаю неправильно.

(a) Я неправильно вызываю Javascript? (б) Я использую код PHP где-то, я не должен его использовать?

В целом, я в недоумении.

UPDATE:

Пожалуйста, не обращайте внимания, что PHP ерунду я писал внутри функции JavaScript

Это была ошибка.

Вот фактическая функция JS для validateEmail:

 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> 

Этот сценарий также отлично работает.

Однако первая часть сценария - пустая трата времени.

Там не было никакой необходимости, чтобы вставить функцию для подсчета «количество символов»

(HTML обеспечивает свойство «MINLENGTH» для значений данных)

Итак, что мне нужно сделать, это удалить, что частично, и как-то замените его чем-то более полезным ..........., таким как: проверка VALIDITY адреса электронной почты.

Проблема: Я пытался, но только испортил код))))

ответ

0

Вы звоните filter_var в вашем яваскрипта коде. Filter_var - это php-функция, о которой javascript ничего не знает.

Вы можете выполнить проверку подлинности электронной почты непосредственно в html по html5. На вкладке введите type = "email" и добавьте требуемый ввод. Это заставит вход быть электронной почтой.

<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; 
} 
+0

Спасибо, Брэндон. Я уже использовал свойство «required» в моей html-форме. Но это гарантирует только то, что пользователь внесет что-либо в форму. Он не проверяет правильность синтаксиса электронной почты. Что касается функции JavaScript, которую вы мне дали, то мой вопрос: ГДЕ я вызываю эту функцию? OnBlur, или OnKeyup ............ или .... ?? – newuserphp

+0

Если вы предпочитаете type = "email", это гарантирует синтаксис электронной почты. –

Смежные вопросы