Я хочу отправить форму с помощью ajax, поэтому я пытаюсь отключить ее отправку с помощью return false;
. Когда я пользуюсьRails form return false works using .submit(), но не .on()
$('#post_form').submit(function() {
return false;
работает нормально. Так в чем проблема? Ну, я не хочу привязываться к #post_form
. Я хочу использовать:
$(document).on('submit', '#post_form', function(e) {
Но return false;
не работает. e.preventDefault();
полностью терпит неудачу. Что происходит?
<%= f.button(:submit, name: "Post", title: "Post",
class: 'btn btn-default btn-xs notice_submit', id: 'postbutt'
) do %>
<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
<% end %>
Javascript:
$(document).on('submit', '#post_form', function(e) { // return false; doesn't work
// $('#post_form').submit(function() { // return false; works fine
if (validatePostForm()) {
$.ajax({
type: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'script'
});
}
e.preventDefault(); // this doesn't do anything
return false; // neither does this
});
EDIT
Я только что обнаружил, что удаление remote: true
из формы получает это работает, хотя я не понимаю, почему:
<%= form_for(:post, url: :posts, method: :post,
html: { class: "notice_form", id: "post_form" }
# remote: true
) do |f| %>
Я предполагаю, что в последнем примере обработчик вообще не прикреплен, попробуйте добавить предупреждение или консоль. Это часто случается с turbolinks, если вы не обращаете внимания на различия в жизненном цикле страницы. – max
Обработчик прилагается. Предупреждение перед «return false» появляется. – Bazley