2014-08-30 4 views
-1

Я хочу отправить форму с jquery, но она не работает, я пытаюсь отлаживать, но обнаружил, что она даже не входит в метод submit. не могу понять, почемуjquery submit form not working

$("#btn").click(function(){ 
     $('form').submit(function(event){ 
     alert('11'); 
     event.preventDefault(); 
     $.post("${contextPath}/announcement/addAnnoPubToPerson.action",$(this).serialize()).done(alert('done')); 
     }); 
    }); 

я также попытался

$("#btn").click(function(){ 
     $(document).on('submit','form',function(event){ 
     alert('11'); 
     event.preventDefault(); 
     $.post("${contextPath}/announcement/addAnnoPubToPerson.action",$(this).serialize()).done(alert('done')); 
     }); 
    }); 

до сих пор не работает.

+0

есть ли предупреждение или ошибки на консоли – budamivardi

+0

вы проверили ваш код поджигатель? вы получили какие-либо ошибки? – Farshad

+0

Dont have, просто пропустите его, вот и все –

ответ

1

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

$("#btn").click(function(){ 
    $("form").trigger('submit'); 
}); 

    $('form').submit(function(event){ 
    alert('11'); 
    event.preventDefault(); 
    $.post("${contextPath}/announcement/addAnnoPubToPerson.action",$(this).serialize()).done(alert('done')); 
    }); 

выше ответ полезно, если ваш #btn не тип ввода представить, если его входной тип представить то только ниже фрагмент кода будет работать:

$('form').submit(function(event){ 
    alert('11'); 
    event.preventDefault(); 
    $.post("${contextPath}/announcement/addAnnoPubToPerson.action",$(this).serialize()).done(alert('done')); 
    }); 

проблема в вашем случае состоит в том, что «click» и «submit» - это два разных события jquery, событие «submit» автоматически запускается для формы, когда вы нажимаете кнопку ввода типа ввода.

+0

Это работает, но почему? кажется, не отличается от –

+1

, потому что 'click' и 'submit' являются двумя разными событиями jquery ... 'submit' событие автоматически запускается для формы, когда вы нажимаете кнопку ввода типа ввода. Если в вашем случае в '#btn' есть типа отправки, тогда не нужно писать этот '$ ("# btn"). click (function() {});' просто напишите $ ('form'). submit (function (event) и его завершение –

+0

теперь я понимаю, спасибо! –

0

Использование AJAX Вместо:

$('.success-message').hide(); 
$('.error-message').hide(); 

$('.get form').submit(function(e) { 
    e.preventDefault(); 
    var postdata = $('.get form').serialize(); 
    $.ajax({ 
     type: 'POST', 
     url: 'assets/submit.php', 
     data: postdata, 
     dataType: 'json', 
     success: function(json) { 
      if(json.valid == 0) { 
       $('.success-message').hide(); 
       $('.error-message').hide(); 
       $('.error-message').html(json.message); 
       $('.error-message').fadeIn(); 
      } 
      else { 
       $('.error-message').hide(); 
       $('.success-message').hide(); 
       $('.get form').hide(); 
       $('.success-message').html(json.message); 
       $('.success-message').fadeIn(); 
      } 
     } 
    }); 
}); 
2

Оба ваши BTN обработчики нажмите присоединять слушателю форме не покориться и ничего другого. Нажатие кнопки не будет отправлять форму. Если кнопка запускает нормальная отправки формы, вы можете выйти из обработчика щелчка полностью и следующий раз должен работать:

$('form').submit(function(event){ 
    alert('11'); 
    event.preventDefault(); 
    $.post("${contextPath}/announcement/addAnnoPubToPerson.action",$(this).serialize()).done(alert('done')); 
    }); 

Если кнопка не срабатывает нормальная форму представить, а затем использовать ответ @ Exception в.

Можно также отметить, что $ ('form'). Submit() будет прослушивать все формы отправки, возможно, вы захотите предотвратить обработку отправки в других формах, предоставив предполагаемую форму классу или идентификатору и использовать следующее вместо:

$('form.THEFORM').submit(...)