我想提交带有ajax的表单,因此我尝试使用return false;
禁用其提交。当我使用
$('#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
});
修改
我刚刚发现从表单中删除remote: true
会让它正常工作,但我不明白为什么:
<%= form_for(:post, url: :posts, method: :post,
html: { class: "notice_form", id: "post_form" }
# remote: true
) do |f| %>
答案 0 :(得分:1)
尝试放入e.preventDefault();在功能的开头。这是为了确保它运行,因为如果放在底部,函数中的其他内容可能会阻止它运行。
放入console.log('test');并打开浏览器的调试控制台,看看它是否实际触发。 或者,您可以使用alert('test');检查。