Плагин проверки jQuery addMethod - PullRequest
       0

Плагин проверки jQuery addMethod

1 голос
/ 18 августа 2010

Я пытаюсь добавить новый метод в плагин проверки jQuery с кодами ниже.Моя цель - проверить, существует ли адрес электронной почты в базе данных (MySQL).Если это так, он проинформирует пользователя о необходимости регистрации другого адреса электронной почты.Каким-то образом результат, который всегда возвращается: «Электронная почта уже занята».

Это коды в validate.js:

$(document).ready(function(){
 $.validator.addMethod("uniqueEmail", function(value, element) {
   $.ajax({
      type: "POST",
      url: "availability.php",
      data: value,
      success: function(exist)
      {
       if(exist>0) {
         return true;
       } return false;
      }
  });
 } ,"Email is already taken");
 $('#signup form').validate({
  rules: {
   firstname: {
    required: true,
    minlength:3
   },
   lastname: {
    required: true,
    minlength: 3
   },
   affiliation: {
    required: true,
   },
   occupation: {
    required: true,
   },
   email: {
    required: true,
    email: true,
    uniqueEmail: true
   },
   password: {
    minlength: 6,
    required: true
   },
   repassword: {
    equalTo: "#password"
   }
  },
  messages: {
   firstname: {
    minlength: "Your first name should be more than 3 characters"
   },
   lastname: {
    minlength: "Your last name should be more than 3 characters"
   },
  }, 
  success: function(label) {
   label.text('OK!').addClass('valid');
  }
 });
});

А это коды в моем файле php:1006 *

<?php

include_once $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/magicquotes.inc.php';
include $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/db.inc.php';

$email = strtolower($_POST['email']);
$email = mysqli_real_escape_string($link, $email);
$sql = "SELECT * FROM bradduser WHERE email='$email'";
$result = mysqli_query($link, $sql);
$num = mysqli_num_rows($result);

echo $num;

?>

1 Ответ

3 голосов
/ 18 августа 2010

Вы не можете сделать это здесь с помощью специального метода, потому что вам нужен плагин проверки, чтобы знать, что это удаленный (или, что более важно, асинхронный) запрос.

К счастью, он имеет встроенную функциональность, чтобы помочь.Вместо пользовательского метода вы можете использовать remote здесь, так что вообще оставьте пользовательский метод и измените его:

uniqueEmail: true

для этого:

remote: { url: "availability.php", type: "post" }

Затем добавьте сообщение об ошибке в messages следующим образом:

email: { remote: "Email is already taken" }

Также измените свою сторону PHP, чтобы соответствовать, возвращая true или false, например:

<?php
  include_once $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/magicquotes.inc.php';
  include $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/db.inc.php';

  $email = strtolower($_POST['email']);
  $email = mysqli_real_escape_string($link, $email);
  $sql = "SELECT * FROM bradduser WHERE email='$email'";
  $result = mysqli_query($link, $sql);
  if(mysqli_num_rows($result) > 0) {
    echo "false";  //validation fails, email in use
  } else {
    echo "true";   //validation passes
  }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...