禁用HTML页面上所有表单的提交function

使用.NET Windows窗体WebBrowser控件来显示页面的预览,我使用此SO发布中描述的以下方法来禁用页面上的所有链接:

 $(function() { $('a').click(function() { $(this).attr('href', 'javascript:void(0);'); }); }); 

由于我想要显示为预览的HTML页面也包含HTML表单,我正在寻找一种类似的方法来禁用所有表单提交function。

我试过了:

 $(function() { $('form').attr('onsubmit', 'return false'); }); 

但似乎这不起作用(读:“仍然加载页面”)的forms,如:

 

我在页面上。

所以我的问题是:

在HTML页面上禁用所有表单提交function的最佳方法是什么,无论是GET还是POST表单?

你应该能够做到:

 $('form').submit(false); 

从jQuery文档 :

在jQuery 1.4.3中,您现在可以传入false来代替事件处理程序。 这将绑定一个等效于:function(){return false; }。 稍后可以通过调用:.unbind(eventName,false)删除此函数。

您可以禁用提交按钮

 $('form :submit').attr("disabled", "disabled"); 

或者只是让提交事件什么都不做

 $('form').submit(function(e){ e.preventDefault(); }); 

这取决于你想要实现的目标。

然后你可以使用…的组合

 $('form :submit').attr("disabled", "disabled"); 

 $('form').unbind('submit'); 

使用jquery我会这样做

 $('form').submit(function(event){event.preventDefault();}); 

使用jquery你通常不使用.attr(...)来绑定事件监听器,而应该使用辅助方法或.bind(...)

这里是完整的参考: jQuery事件

如果你想阻止只是表单提交:

我认为,阻止

向任何地方发送任何内容的最佳方法是:

 $('form').submit( function(e){ e.preventDefault(); }); 

这将禁用页面上的所有表单,无需为每个表单单独执行。

JSFiddle演示启用/禁用表单提交:

http://jsfiddle.net/cDLsw/6/

用这个:

 

使用事件委派来阻止提交正文中的所有表单。

 $("body").on("submit", "form", function( event ){ event.preventDefault(); }); 

顺便说一句,你的Javascript代码禁用页面上的所有链接不是一个好方法 。 你可以使用类似的东西

 // use "bind" instead of "on" if you use a jQuery version prior to 1.7 $("a").on( "click", function( ev ) { ev.preventDefault(); }); // or use event delegation $("body").on( "click", "a", function( ev ) { ev.preventDefault(); }); // the power of event delegation in action: // disable BOTH links and form with one event handler $("body").on( "click", "a, form", function( ev ) { ev.preventDefault(); }); 

这是一个工作演示http://jsfiddle.net/pomeh/TUGAa/