Отправка формы JQuery с неработающей функцией

У меня проблема с отправкой функции jquery для формы:

$(document).ready(function () {
    $('#message').keydown(function(e) {
      if(e.which == 13 && !e.shiftKey) {
         $('#edit_message_11').submit(function() {
            alert("HELLO2");            
         });            
         return false;
      }
    }); 
}); 


<form id="edit_message_11" class="edit_message" method="post" action="/message/11" accept-charset="UTF-8">
<textarea id="message" class="form-control edit_message_form" name="message">
Hello
</textarea>

http://jsfiddle.net/978QC/

Когда я делаю следующее для своей формы: $('#edit_message_11').submit(function() { ... }); это не вызывает отправку.

Однако, если я делаю $('#edit_message_11').submit();, это вызывает отправку.

Причина, по которой мне нужно сделать $('#edit_message_11').submit(function() { ... });, заключается в том, что я хочу выполнить отправку ajax.

Кто-нибудь знает?

Спасибо!


person fabdarice    schedule 29.07.2014    source источник
comment
извините, правильная ссылка: jsfiddle.net/978QC   -  person fabdarice    schedule 29.07.2014


Ответы (1)


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

Ваш вызов AJAX не обязательно должен быть внутри функции отправки, он просто должен быть внутри события.

$(document).ready(function () {
    $('#selfie_message').keydown(function(e) {
      if(e.which == 13 && !e.shiftKey) {
         $('#edit_selfie_11').submit();           

         $.ajax({
         type: "POST",
         url: "/selfies/11",
         data: $("#edit_selfie_11").serialize()
         });
       }
    }); 
});

Если вам нужно, чтобы что-то произошло в случае успеха, вы бы сделали это так.

$(document).ready(function () {
    $('#selfie_message').keydown(function(e) {
      if(e.which == 13 && !e.shiftKey) {
         $('#edit_selfie_11').submit();           

         $.ajax({
         type: "POST",
         url: "/selfies/11",
         data: $("#edit_selfie_11").serialize(),
         success: function(response){
         //your response code here//
         }
         });
       }
    }); 
});
person EternalHour    schedule 29.07.2014
comment
Большое спасибо! Думаю, я видел во многих других сообщениях предупреждение внутри submit(function()), и, похоже, оно сработало для них. Однако ваше решение работает отлично. Еще раз спасибо за вашу помощь! - person fabdarice; 29.07.2014