Изпращане на формуляр на JQuery с неработеща функция

Имам проблем с функцията jquery submit за формуляр:

$(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 submit.

Някой има ли представа?

Благодаря!


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