使用.NET Windows Forms WebBrowser
control显示页面预览,我使用this SO posting中描述的以下方法来禁用页面上的所有链接:
$(function() {
$('a').click(function() {
$(this).attr('href', 'javascript:void(0);');
});
});
由于我想要作为预览显示的HTML页面也包含HTML表单,我正在寻找一种类似的方法来禁用所有表单提交功能。
我试过了:
$(function() {
$('form').attr('onsubmit', 'return false');
});
但似乎这不起作用(阅读:“仍然加载页面”)表格如下:
<form id="myform" name="myform" onsubmit="return search()" action="">
我在页面上。
所以我的问题是:
在HTML页面上禁用所有表单提交功能的最佳方法是什么,无论是GET还是POST表单?
答案 0 :(得分:27)
你应该可以这样做:
$('form').submit(false);
在jQuery 1.4.3中,您现在可以传入false来代替事件 处理程序。这将绑定一个等效于:function(){的事件处理程序 返回false; }。此功能可以在以后删除 调用:.unbind(eventName,false)。
答案 1 :(得分:3)
然后你可以使用..
的组合$('form :submit').attr("disabled", "disabled");
和
$('form').unbind('submit');
答案 2 :(得分:3)
您可以停用提交按钮
$('form :submit').attr("disabled", "disabled");
或只是让提交事件无效
$('form').submit(function(e){ e.preventDefault(); });
这取决于你想要达到的目的。
答案 3 :(得分:2)
使用jquery我会这样做
$('form').submit(function(event){event.preventDefault();});
使用jquery你通常不使用.attr(...)
绑定事件监听器而应该使用辅助方法,或者.bind(...)
这里是完整的参考:jQuery events
答案 4 :(得分:2)
我认为,阻止<form>
向任何地方发送内容的最佳方法是:
$('form').submit( function(e){
e.preventDefault();
});
这会禁用页面上的所有表单,无需为每个表单单独执行。
答案 5 :(得分:2)
使用此:
<form id="myform" name="myform" onSubmit="search();return false;" action="">
答案 6 :(得分:0)
使用事件委派来阻止提交正文中的所有表单。
$("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/
答案 7 :(得分:0)
<style>[busy]{pointer-events:none;}</style>
<form>....</form>
<form>....</form>
<form>....</form>
<script>
function disableIt(node){
node.setAttribute('busy','');
// later re-enable with node.removeAttribute('busy')
}
Array.from(document.querySelectorAll('form')).forEach(disableIt);
// NOTE other functions can return on form.hasAttribute('busy') if needed
</script>
我的其他答案有一个更具体的一次性例子:https://stackoverflow.com/a/64831209/965666