禁用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演示启用/禁用表单提交:
用这个:
使用事件委派来阻止提交正文中的所有表单。
$("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/