Slyweb
На разработку сайта! Скидки 50%!

jQuery & Ajax

Вы можете задавать любые вопросы по jQuery.

jQuery & Ajax

Сообщение zursan » 25 янв 2012, 23:59

Здравствуйте
Может кто нибудь поможет решить мою проблему.
Этот скрипт работает нормально но есть одна проблема. К соответствующей форме добавляет класс \\\ .addClass('error') \\\, но не выводить сообшение \\\ .append($error.clone().text("this login is busy")) \\\ на -25 строке , ( на -13 строке все работает хорошо).
Прошу подскажите.
Спасибо.


Код: Выделить всё
 $(document).ready(function() { 
     $('.btn-submit').click(function(e){     
         var $formId = $(this).parents('form');
         var formAction = $formId.attr('action');
         var $error = $('<span class="error"></span>');
         $('li',$formId).removeClass('error');
         $('span.error').remove();
         $('.required',$formId).each(function(){
             var inputVal = $(this).val();
             var $parentTag = $(this).parent();
                                           
             if(inputVal == ''){ 
                 $parentTag.addClass('error').append($error.clone().text('enter some text'));                 
             }
 //---------------------------------------------------------------------------------------------------
             if($(this).hasClass('login') == true){             
                 login = $("#login").val();
                 $.ajax({
                     url: "testing.php",
                     type: "POST",
                     data: "login=" + login,
                     cache: false,
                     success: function(response){
                         if (response == "no"){
                             $parentTag.addClass('error').append($error.clone().text("this login is busy"));                     
                         }                                 
                     }
                 }); 
              }             
 //---------------------------------------------------------------------------------------------------     
     });         
         if ($('span.error').length > 0) {             
             $('span.error').each(function(){
                 var distance = 5;
                 var width = $(this).outerWidth();                 
                 var start = width + distance;
                 
                 $(this).show().css({
                     display: 'block',
                     opacity: 0,
                     right: -start+'px'
                 })
                 .animate({
                     right: -width+'px',
                     opacity: 1
                 }, 'slow');                 
             });
         } else {
             $formId.submit();
         }
             e.preventDefault();
     });     
     $('.required').focus(function(){
         var $parent = $(this).parent();
         $parent.removeClass('error');
         $('span.error',$parent).fadeOut();
         });
 });
submit();
}
e
zursan
 
Сообщения: 3
Зарегистрирован: 25 янв 2012, 23:49

Re: jQuery & Ajax

Сообщение admin » 26 янв 2012, 08:01

Я использовал бы следующий код:

Код: Выделить всё
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>тег &lt;iframe&gt;</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<!-- inner counter-->
<script type="text/javascript">
 $(document).ready(function() { 
     $('.btn-submit').click(function(e){     
         var $formId = $(this).parents('form');
         var formAction = $formId.attr('action');
         var $error = $('<span class="error"></span>');
         $('li',$formId).removeClass('error');
         $('span.error').remove();
         $('.required',$formId).each(function(){
             var inputVal = $(this).val();
             var $parentTag = $(this).parent();
                                           
             if(inputVal == ''){ 
                 $parentTag.addClass('error').append($error.clone().text('enter some text'));                 
             }
 //---------------------------------------------------------------------------------------------------
             if($(this).hasClass('login') == true){             
                 login = $("#login").val();
                 $.ajax({
                     url: "testing.php",
                     type: "POST",
                     data: "login=" + login,
                     cache: false,
                     success: function(response){
                         if (response == "no"){
                             $parentTag.addClass('error').append($error.clone().text("this login is busy"));                              if ($('span.error').length > 0) {             
                         $('span.error').each(function(){
                            var distance = 5;
                            var width = $(this).outerWidth();                 
                            var start = width + distance;
                            
                            $(this).show().css({
                               display: 'block',
                               opacity: 0,
                               right: -start+'px'
                            })
                            .animate({
                               right: -width+'px',
                               opacity: 1
                            }, 'slow');                 
                         });
                      } else {
                         $formId.submit();
                      }
                         }                                 
                     }
                 }); 
              }             
 //---------------------------------------------------------------------------------------------------     
     });         

             e.preventDefault();
     });     
     $('.required').focus(function(){
         var $parent = $(this).parent();
         $parent.removeClass('error');
         $('span.error',$parent).fadeOut();
         });
 });
</script>
</head>

<body>
<form>
<input type="password" id="login" class="required login" name="login"/>
<input type="submit" id="login" name="login" class="btn-submit" />

</form>

</body>
</html>


у вас отправка формы происходит быстрее функции success
Код: Выделить всё
 
         if ($('span.error').length > 0) {             
             $('span.error').each(function(){
                 var distance = 5;
                 var width = $(this).outerWidth();                 
                 var start = width + distance;
                 
                 $(this).show().css({
                     display: 'block',
                     opacity: 0,
                     right: -start+'px'
                 })
                 .animate({
                     right: -width+'px',
                     opacity: 1
                 }, 'slow');                 
             });
         } else {
             $formId.submit();
         }
admin
Администратор
 
Сообщения: 165
Зарегистрирован: 15 авг 2009, 20:02

Re: jQuery & Ajax

Сообщение zursan » 27 янв 2012, 02:43

Спасибо admin за помощь.

:!: :!: :!:
zursan
 
Сообщения: 3
Зарегистрирован: 25 янв 2012, 23:49


Вернуться в Вопросы по jQuery

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron