jQuery – 表单仍然提交返回false

http://jsfiddle.net/QsTfc/

由于一些奇怪的原因,即使我返回假,表单也会继续提交。 我试过了:

$("#submitEdit").submit(function() { return false; }); $("#submitEdit").submit(function() { event.preventDefault(); }); 

这就是我现在拥有的:

  $('a').click(function() { var parentId = $(this).closest('tr').attr('id'); var child = $("#" + parentId).children().eq(1); var childText = $(child).text(); $(child).html('<form action="user/changeSettings/' + parentId + '" method="POST" id="submitEdit">'); console.log(childText); }); $("#submitEdit").on("submit", function() { var url = $(this).attr('action'); var data = $(this).serialize(); alert(data); $.post(url, data, function(returned) { $(parentId + "Field").html(returned); return false; }); return false; });  

根据您的jsfiddle演示,您的表单将添加到dinamically。 所以,你必须使用委托:

 $(document).on("submit", "#submitEdit", function() { var url = $(this).attr('action'); var data = $(this).serialize(); alert(data); $.post(url, data, function(returned) { $(parentId + "Field").html(returned); return false; }); return false; }); 

的jsfiddle

你需要将你的事件参数放在你的回调函数中

 $("#submitEdit).submit(function(event) { event.preventDefault(); }); 

试试这个:

 $(document).on("submit", "#submitEdit", function(event) { event.preventDefault(); var url = $(this).attr('action'); var data = $(this).serialize(); alert(data); $.post(url, data, function(returned) { $(parentId + "Field").html(returned); return false; }); }); 

何时使用return false以及何时使用event.preventDefault()。 你可以看一下这个问题: 我什么时候应该在jquery函数中使用return false?