防止表单上的默认提交jQuery

这有什么问题?

HTML:

<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms"> <input type="text" name="zip" value="Zip code" id="Zip" class="required valid"> <input type="submit" name="Next" value="Submit" class="forms" id="1"> </form> 

jQuery的:

 $("#cpa-form").submit(function(e){ e.preventDefault(); }); 

尝试这个:

 $("#cpa-form").submit(function(e){ return false; }); 

使用新的“on”事件语法。

 $(document).ready(function() { $('form').on('submit', function(e){ // validation code here if(!valid) { e.preventDefault(); } }); }); 

引用: https : //api.jquery.com/on/

我相信上面的答案都是正确的,但是没有指出为什么submit方法不起作用。

那么,如果jQuery无法获得form元素,那么submit方法将不起作用,jQuery不会给出任何错误。 如果您的脚本放在文档的头部,请确保代码在DOM 准备就绪后运行。 所以, $(document).ready(function () { // your code here // }); 将解决问题。

最好的做法是, 总是把你的脚本放在文档的底部。

 $('#cpa-form input[name="Next"]').on('click', function(e){ e.preventDefault(); }); 
 $(document).ready(function(){ $("#form_id").submit(function(){ return condition; }); }); 

您好,寻求一个解决scheme,使谷歌跟踪代码pipe理器(GTM)的Ajaxforms的工作,返回false阻止完成,并提交事件的实时激活谷歌分析解决scheme是改变返回false由e.preventDefault() ; 正确地工作遵循代码:

  $("#Contact-Form").submit(function(e) { e.preventDefault(); ... }); 

你的代码很好,只需要把它放在ready函数中。

 $(document).ready( function() { $("#cpa-form").submit(function(e){ e.preventDefault(); }); } 

已弃用 – 这部分已经过时,请不要使用它。

你也可以尝试这个代码,如果你有后来添加dynamic表单。 例如,你用ajax加载了一个窗口asynchronous,并希望提交这个表单。

 $('#cpa-form').live('submit' ,function(e){ e.preventDefault(); // do something }); 

更新 – 如果你想处理dynamic添加的内容,你应该使用jQuery on()方法尝试侦听文档DOM。

情况1,静态版本:如果你只有几个听众,你的表单是硬编码的,那么你可以直接在“文档级”上听。 我不会在文档级别使用监听器,但我会尝试在末日树中更深入一些,因为它可能会导致性能问题(取决于您的网站和您的内容的大小)

 $('form#formToHandle').on('submit'... 

要么

 $('form#formToHandle').submit(function(e) { e.preventDefault(); // do something }); 

情况2,dynamic版本:如果您已经在代码中收听文档,那么这种方式对您有好处。 这也适用于以后通过DOM添加的代码或者通过AJAXdynamic添加的代码。

 $(document).on('submit','form#formToHandle',function(){ // do something like e.preventDefault(); }); 

要么

 $(document).ready(function() { console.log( "Ready, Document loaded!" ); // all your other code listening to the document to load $("#formToHandle").on("submit", function(){ // do something }) }); 

要么

 $(function() { // <- this is shorthand version console.log( "Ready, Document loaded!" ); // all your other code listening to the document to load $("#formToHandle").on("submit", function(){ // do something }) });