2012-05-23 2 views
1

Я пытаюсь сделать это произошло:JQuery анимации в бесконечном цикле

  1. предотвратить кнопку отправки от отправки формы

  2. исчезать элемент из

  3. затем заполните форму

Но я застрял с бесконечным циклом анимации! Зачем??

HTML

<form id="postitron" method="post" action="/postitron/answertron.php"> 
    <input type="hidden" name="acces" value"yes"> 
    <input id="submit" type="submit" value="DOIT"> 
</form> 

JavaScript

$('#postitron').submit(function(e){ 
    e.preventDefault(); 
    $('#page').animate({opacity:0},400, function(){ 
     $('#postitron').submit(); 
    }); 
}); 

PS- Я также попробовал .one() метод вместо .submit(), но препятствует метод представить запуск на #postitron После завершения анимации в :(

ответ

0

Это потому, что вы являетесь обязательными для вашего мероприятия на SUBMIT, и ваш .animate callback function является SUBMIT «ИНГ формы ... в результате чего бесконечная петля.

Попробуйте это:

Вместо связывания события .submit на form, связать .click событие на submit кнопку.

$('#submit').click(function(e){ 
    e.preventDefault(); 
    $('#page').animate({opacity:0},400, function(){ 
     $('#postitron').submit(); 
    }); 
}); 

Голые в виду, я не проверял это.

+0

Если вы нажмете '' в поле ввода в форме, форма будет представлена ​​без анимации. – robrich

+0

Приятная мысль, но возвращает ошибку в консоли: Uncaught TypeError: Свойство 'submit' объекта # не является функцией – technopeasant

+1

Отредактировано, чтобы отметить, что щелчок находится на кнопке отправки, а не в форме. – robrich

0

submit() вызывает вашу специальную функцию submit, которая в t Урны называют ваш submit снова и т.д.

Попробуйте использовать DOM Передать:

$('#postitron')[0].submit()

+0

ах .. логично. теперь анимация завершается, но форма не публикуется (она должна быть 404 в моем тесте). Есть предположения? – technopeasant

+0

hhm, откуда вы знаете, что он не отправляет? Консоль? –

+0

Да, сэр: Uncaught TypeError: Свойство 'submit' объекта # не является функцией – technopeasant

0

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

Или, возможно, вы проверить это спрятанный-Несс, а затем повторно, как это:

var hidden = false; 
$('#postitron').submit(function(e){ 
    if (!hidden) { 
     e.preventDefault(); 
     $('#page').animate({opacity:0},400, function(){ 
      hidden = true; 
      $('#postitron').submit(); 
     }); 
    } 
}); 
Смежные вопросы