2013-09-24 2 views
1

В конце документа у меня есть:На представить функции не

<script> 
    $("#submitEvent").click(function() { 
     $("#eventForm").submit(); 
    }); 


    $(document).ready(function() { 


    $('#eventForm').submit(function() { 
     console.log("I am on submit"); 

    }); }); 
</script> 

Теперь submitEvent кнопка, которая не в форме, так и причины, имеющие на .click события.

При нажатии кнопки формы Представлять срабатывает правильно:

Теперь я ожидаю другое событие, которое срабатывает, когда подавать обжигают, который фактически игнорируется какой-либо причине. Вместо console.log я не удивительно собирается использовать Ajax, но даже console.log ничего не печатать, так что событие не происходит ..

Update, так как вы не предложили еще ничего :-):

$(document).ready(function() { 

    $("#submitEvent").click(function() { 
     $("#eventForm").submit(); 
    }); 




    $('#eventForm').submit(function() { 
     console.log("I am on submit"); 

    }); 


    }); 
+0

Хм, так как я могу проверить, будет ли вызван ajax. Попробуйте изменить значение внутри dom ajax onSuccess? – Aubergine

+1

Как я уже сказал, поставьте точку останова в обработчике и посмотрите, попадет ли он. Или, если вам нужна отладка с 1990-х годов, введите «предупреждение». :-) –

+0

:-D Момент! :-D – Aubergine

ответ

1

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


В комментариях, вы сказали:

Хм, так как я могу проверить, если Аякс будет называться.

Вы можете проверить, установив точку останова на свой оператор console.log и посмотрев, попадает ли точка останова. Или, если вы хотите отлаживать стиль 1990-х годов, используйте alert.

Но обратите внимание, что выполнение ajax из обработчика представления формы, если результат формы заменит страницу, является ненадежным. (Если результат формы не будет заменить страницу, вы, вероятно, хорошо.) Это потому, что ajax является асинхронным, то есть ваш обработчик отправки может начать, но он не успел закончить, прежде чем быть отмененным путем разрыва.

+0

Хотелось бы, чтобы мой мозг работал так. :-) – Aubergine

+0

@Aubergine: LOL –

1

Вам просто нужно, чтобы переместить код внутри готовой функции

<script> 
    $(document).ready(function() { 
     $("#submitEvent").click(function() { 
      // run ajjax code here 
     }); 

     $('#eventForm').submit(function(e) { 
      e.preventDefault(); // stops the page from submiting 
      console.log("I am on submit"); 
     }); 
    }); 
</script> 

Я обновил код, вам не нужно отправить форму. просто запустите ajax при нажатии.

+0

В вопросе говорится, что над сценарием: * «** В конце документа ** у меня есть:« * (мой акцент). –

+0

Да, я обновил свой вопрос и включил его в готовую в любом случае - до сих пор ничего :-D – Aubergine

+0

@Aubergine см. Мое обновление – Ibu

1

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

$(document).ready(function() { 

    $("#submitEvent").click(function() { 
     $("#eventForm").submit(); 
    }); 

    $('#eventForm').submit(function(e) { 
     e.preventDefault(); 
     console.log("I am on submit"); 
    }); 
}); 

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

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

+0

Это действительно печатает после вашего обновления! Итак, @ T.J. Правильно? – Aubergine

+0

Да. Просто обработайте отправку, как вы планировали, теперь, когда вы знаете, что ваш обработчик событий работает :) – Archer

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