.submit () не работает правильно, unbind () помогает, но имеет побочный эффект - PullRequest
2 голосов
/ 31 декабря 2011

Будет коротким и сладким:

  • форма, предназначенная для создания нового пользователя, если имя пользователя доступно (фактически идет на страницу подтверждения)
  • Форма остановлена ​​и отображается сообщение об ошибке, если имя недоступно
  • PHP работает нормально и форма останавливается, когда имя взято, однако требуется 2 клика для отправки, когда вводится правильное имя пользователя, первый щелчок ничего не делает, второй щелчок отправляет форму отлично, поэтому все это работает без необходимости нажмите дважды

Любая помощь в возможности отправить форму сразу же мне очень поможет:)

Код, как он работает, кроме того, что когда имя пользователя доступно, он не передает, закомментированная строка позволяет ему отправлять, но, как упоминалось ранее, только после второго нажатия кнопки отправки.

$(document).ready(function()
{

$(".f_create").submit(function()
{ 

    var username = $(".userID").val();

    $.ajax({  
      type: "POST",
      url: "id_check.php",  
      data: "userID="+ username,  
      success: function(response){

        if(response=="NO"){
            $('.l_userID').append('<label class="format" style="color:blue">Nope</label>');   
        }
        else if(response=="YES"){   
            // $(".f_create").unbind();  ..... submits the form but only on second click of submit button
            $(".f_create").submit();

        }

      }

    });

    return false; 

});

});

1 Ответ

3 голосов
/ 31 декабря 2011

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

$(".f_create").submit(function(e, explicitSubmit){ 
    if (explicitsubmit) {
         //If the flag is defined, cancel function.
         return; //<-- Return. Form will be "normally" submitted.
    } else {
        // By default, prevent a submission
        e.preventDefault();
    }
    var username = $(".userID").val();

    $.ajax({  
      type: "POST",
      url: "id_check.php",  
      data: "userID="+ username,  
      success: function(response) {
        if (response == "NO") {
            $('.l_userID').append('<label class="format" style="color:blue">Nope</label>');   
        }
        else if (response == "YES") {
            $(".f_create").trigger("submit", [/* explicitSubmit */true]);

        }
      }
    });
});
...