2015-11-28 2 views
-1

У меня есть форма с текстовым полем ввода. Ввод текста должен быть проверен одновременно, когда пользователь вводит данные.проверить текстовое поле при вводе php

<form method="post" action="Newsletter/tester.php"> 
    <label for="email">email</label> 
    <input type="text" name="email" placeholder="Enter your email *" maxlength="50" required> 
    <input type="submit" value="test"> 
</form> 

Входной email текстовое поле должно быть подтверждено на стороне сервера, но я не имею ни малейшего представления о проверке текстового поля при вводе.

Есть ли способ сделать это, используя php-скрипт?

+1

Использование Javascript (или JQuery) с вызовом Ajax на сервер, который будет проверять на действительность на 'keyup' на' input' поле. – D4V1D

ответ

2

Если вы готовы использовать JQuery и PHP, вот Exemple того, что вы можете сделать:

HTML

<form action="Newsletter/tester.php" method="post"> 
    <input type="email" name="email" id="email-input"> 
    <button type="submit">Send</button> 
    <br/> 
    <span id="email-validate">Waiting for user input...</span> 
</form> 

JQuery

jQuery(function($) { 

    // When the user types something in the input 
    $('#email-input').on('keyup', function(e) { 

     // set the variables 
     var $input = $(this) 
     , value = $input.val() 
     , data = { 
       email: value 
     }; 

     // perform an ajax call 
     $.ajax({ 
      url: 'my/validator.php', // this is the target 
      method: 'get', // method 
      data: data, // pass the input value to server 
      success: function(r) { // if the http response code is 200 
       $('#email-validate').css('color', 'green').html(r); 
       $('button').removeAttr('disabled'); 
      }, 
      error: function(r) { // if the http response code is other than 200 
       $('#email-validate').css('color', 'red').html(r); 
       $('button').attr('disabled', 'disabled'); 
      } 

     }); 
    }); 

}); 

PHP (> = 5,4)

<?php 
if(isset($_GET['email'])) { 
    $email = $_GET['email']; 

    if(filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     http_response_code(200); 
     echo 'The email '.$email.' is valid'; 
    } else { 
     http_response_code(412); 
     echo 'The email '.$email.' is not valid'; 
    } 
} 
+0

Появилась проблема с производительностью и оборванные ответы, поэтому «прервать» предыдущие аякс-вызовы проверки подлинности электронной почты перед отправкой новых – vinayakj

0

Это достигается в PHP и Javascript. Как вы типа, Javascript посылает записанные данные с помощью вызова Ajax с PHP, которым возвращает его ...

Правильный путь, чтобы проверить код

  1. В JavaScript, как это неоспоримым набран. Это делается с событием onkeydown="validate_email(this)" в input
  2. Убедитесь, что адрес электронной почты действителен перед отправкой формы, добавив onsubmit="return email_valid();". Если функция javascript email_valid возвращает true, форма отправляется иначе, если она не отправлена.
  3. В PHP как полные данные передаются, подтверждает это действительно правильный адрес электронной почты в $_REQUEST['email']
Смежные вопросы