2011-12-30 8 views
1

Я использую этот пример: http://youhack.me/2010/05/04/username-availability-check-in-registration-form-using-jqueryphp/ для создания формы (переносит пользователя на страницу подтверждения перед добавлением в базу данных - простая часть, которая приходит после) .. однако я бы хотел, чтобы это проверьте, доступно ли имя пользователя или нет до отправки формы. Я не могу за жизнь мне понять, что им делать неправильно с этим: PПроверка имени пользователя перед отправкой формы - JQUERY/AJAX

МОЯ JQuery/AJAX ниже: (РНР файл он называет прекрасно работает у меня нет необходимости положить его здесь)

$(document).ready(function() 
    { 
     $(".form").submit(function() 
     { 
      var username = $(".userID").val(); 

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

        if(response=="NO"){ 
         alert("no");  
        } 
        else if(response=="YES"){ 
         alert("yes"); 
        } 
       } 

      }); 

      return false; //if i take this line out it submits either way 

     }); 

    }); 

Я знаю, что php работает, потому что появляется правильное предупреждение при использовании имени пользователя или нет, но я не могу получить его, чтобы отправить форму, когда ответ будет ДА, без отправки, когда ответ также будет НЕТ. Я пробовал много разных вещей (включая $ (form) .submit() и различные возвраты и т. Д. Внутри операторов IF), но безрезультатно.

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

Аланы

+0

Возможный дубликат [.submit() не работает правильно, unbind() помогает, но имеет побочный эффект: P] (http://stackoverflow.com/questions/8688532/submit-not-working-correctly-unbind -helps-but-come-with-a-side-impact-p) –

ответ

0

Вы пробовали (смотреть на комментариях):

$(".form").submit(function(e) 
    { 
     var username = $(".userID").val(); 
     //cache the current form 
     var form = this; 
     //check if the event is started by the user or by your success function 
     //if it's triggered by the user, check for the username 
     if (e.originalEvent !== undefined){ 
      $.ajax({ 
      type: "POST", 
      url: "id_check.php", 
      data: "userID="+ username, 
      success: function(response){ 

       if(response=="NO"){ 
        alert("no");  
       } 
       else if(response=="YES"){ 
        //submit the form you have cached 
        $(form).submit(); 
        alert("yes"); 
       } 
      } 

      }); 

     //This is to prevent the form from submitting when you click the submit button 
     return false; //if i take this line out it submits either way 
     } 


    }); 
+0

спасибо за ответ. я попробовал то, что вы поменяли, и он помещает его в цикл - предупреждение «да» продолжает появляться при нажатии кнопки отправки ... –

+0

@AlanWareham да, конечно, потому что он перезапускает форму, я изменил свой ответ, чтобы учесть это , в основном вы проверяете, генерируется ли событие пользователем или по вызову –

+0

, это остановило его от циклизации и вызова формы снова и снова, а правильные сообщения все еще отображаются, но форма не отправляется ни в одном случае. –

0

возвращение лжи не позволит кнопке представить и это также потому, что возвращаемый ложный оператор работает до завершения ajax. Поэтому, я думаю, вам понадобится скрытая кнопка, которую вы назовете ее отправкой, когда ответ == «ДА».

+0

так что скрытая кнопка, которая отправляет ту же форму, но вызывается только тогда, когда ответ да, как вы сказали? –

+0

Да ... Я пробовал это раньше, и это сработало хорошо. –

+0

, также форма $ (". Form") будет обычной кнопкой типа ввода, которая будет нажата, если вы запустите кнопку отправки или нет. –

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