如何重新启用event.preventDefault?

Ric*_*its 70 javascript jquery

我有一个网页,我已阻止所有提交按钮的默认操作,但我想重新启用按钮上的默认提交操作我该怎么办?

我目前正在使用以下方法阻止默认操作:

$("form").bind("submit", function(e){
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

我使用以下方法成功完成了此操作:

$(document).ready(function(){
$("form:not('#press')").bind("submit", function(e){
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

但是,当单击按钮时,我可以动态执行此操作吗?

red*_*are 119

您必须取消绑定事件并重新绑定到不阻止默认的单独事件,或者在解除绑定后稍后在方法中自行调用默认事件.没有神奇的event.cancelled = false;

按照要求

 $('form').submit( function(ev){

         ev.preventDefault();

         //later you decide you want to submit
         $(this).unbind('submit').submit()

  });
Run Code Online (Sandbox Code Playgroud)

  • 最好的办法之一就是根据条件调用preventDefault().虽然这是实现您所描述内容的唯一真正方法,但我鼓励您验证这是解决您问题的最佳方法.:) (3认同)

小智 13

您可以使用此代码执行redsquare建议的操作:

function preventDefault(e) {
    e.preventDefault();
}
$("form").bind("submit", preventDefault);

// later, now switching back
$("form#foo").unbind("submit", preventDefault);
Run Code Online (Sandbox Code Playgroud)

或者,只要允许提交,您就可以分配表单属性.像这样的东西:

function preventDefault(e) {
    if (event.currentTarget.allowDefault) {
        return;
    }
    e.preventDefault();
}
$("form").bind("submit", preventDefault);

// later, now allowing submissions on the form
$("form#foo").get(0).allowDefault = true;
Run Code Online (Sandbox Code Playgroud)


fox*_*gga 6

function(e){ e.preventDefault();
Run Code Online (Sandbox Code Playgroud)

和它的反面

function(e){ return true; }
Run Code Online (Sandbox Code Playgroud)

干杯!