JQuery POST выполняется дважды - PullRequest
0 голосов
/ 18 июня 2020

У меня есть регистрационная форма, и я сделал некоторые условия для проверки наличия электронной почты в базе данных, но когда я создаю новую учетную запись с существующей электронной почтой, она возвращает мне 1, то есть (электронная почта существует), и это нормально, но когда я создаю новую аккаунт с fre sh электронным письмом, он возвращает мне снова 1 .. и он должен вернуть меня -> 4 для (Успешное создание учетной записи) см. мой код ниже:

 $('#acord').on('change', function(){
   this.value = this.checked ? 1 : 0;
 $("#formreg").submit(function(event) {
  event.preventDefault();
  $(".inreg").html('<i class="fa fa-spinner fa-pulse"></i> Verificam informatiile..');
  var $form = $(this),
    acord  = $form.find("[type='checkbox'][name=acord]").val(),
    nume   = $form.find("[type='text'][name=nume]").val(),
    email  = $form.find("[type='email'][name='email']").val(),
    parola = $form.find("[type='password'][name='parola']").val(),
    varsta = $form.find("[type='text'][name='varsta']").val(),
    url = 'inc/sql/register-user.php';
  setTimeout(function() {
    var posting = $.post(url, {
      nume:   nume,
      email:  email,
      parola: parola,
      varsta: varsta,
      acord:  acord
    });
    posting.done(function(data) {
      if (data == 1) {
        swal({
          title: "Adresa de mail exista",
          text: "Adresa de email "+email+" este deja folosita.",
          type: "error",
          timer: 4000,
          showConfirmButton: false
        });
        $(".inreg").html('INREGISTREAZA-TE');
      } else if (data == 2) {
        swal({
          title: "Ups!",
          text: "Adresa de email nu este valida.",
          type: "error",
          timer: 4000,
          showConfirmButton: false
        });
        $(".inreg").html('INREGISTREAZA-TE');
      } else if (data == 3) {
        swal({
          title: "Ups!",
          text: "Parola prea lunga, trebuie sa contina intre 5 si 10 caractere. ",
          type: "error",
          timer: 4000,
          showConfirmButton: false
        });
        $(".inreg").html('INREGISTREAZA-TE');
      } else if (data == 4) {
        swal({
          title: "Felicitari! " + nume + "",
          text: "Contul a fost inregistrat in baza noastra de date. Nu uitati sa adaugati momentele. Va dorim mult succes!",
          type: "success",
          timer: 2100,
          showConfirmButton: false
        });
        $(".inreg").html('<i class="fa fa-spinner fa-pulse"></i> Va logam automat in cont..');
        setTimeout(function() {window.location.href = "?p=contul-meu";}, 3000);
      } else if (data == 5) {
        swal({
          title: "Termeni si conditii neacceptate!",
          text: "Ne pare rau, dar ca sa te poti inregistra pe aceasta platforma trebuie sa fi de acord cu termenii si conditiile noastre!",
          type: "warning",
          timer: 4300,
          showConfirmButton: false
        });
       }
       $(".inreg").html('INREGISTREAZA-TE');
    })
  }, 3000);

});
}).change();

1 Ответ

1 голос
/ 18 июня 2020
$('#acord').on('change', function(){
   this.value = this.checked ? 1 : 0;
 $("#formreg").submit(function(event) {

вы добавляете новый слушатель отправки формы внутри вашего слушателя изменений.

$('#acord').on('change', function(){ ... }).change();

вы также запускаете событие изменения сразу после регистрации вашего слушателя изменений (который, как мы видели выше, добавит отправить слушателя в вашу форму).

вы, как я полагаю, заполняете форму и вручную нажимаете #accord, что добавит в вашу форму второго слушателя отправки. затем вы отправляете форму, и оба ваших обработчика вызываются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...