防止默认后重新启用提交

我试图取消绑定或重新启用防止默认,以便我的表单将提交良好的数据。

我尝试过多个例子。 这是我的代码和我尝试过的一些例子。

这段代码非常适合我想要的。 只是最后一件事并重置我可以在我得到它之后实现的div。

function lengthRestriction(elem, min, max) { var uInput = elem.value; if (uInput.length >= min && uInput.length <= max) { return true; } else { var cnt = document.getElementById('field'); cnt.innerHTML = "Please enter between " + min + " and " + max + " characters"; elem.focus(); $('#ShoutTweet').submit(function(e) { e.preventDefault(); //bind('#ShoutTweet').submit(); //$('#ShoutTweet').trigger('submit'); }); } }​ 

我也有一个jsbin设置http://jsbin.com/ebedab/93

我不完全确定你在问什么,但如果你的目标是销毁自定义submit处理程序,那么使用:

 $("#ShoutTweet").unbind("submit"); 

这假设您有一个普通(不是Ajax)forms。

不要尝试在validation函数中设置和取消提交处理程序, .preventDefault() :从单个提交处理程序中调用validation,如果validation失败,则只调用.preventDefault()

 $(document).ready(function() { $('#ShoutTweet').submit(function(e) { if (/* do validations here, and if any of them fail... */) { e.preventDefault(); } }); }); 

如果所有validation都通过,请不要调用e.preventDefault() ,然后默认情况下会发生提交事件。

或者,您可以从提交处理程序返回false以防止默认值:

  $('#ShoutTweet').submit(function(e) { if (!someValidation()) return false; if (!secondValidation()) return false; if (someTestVariable != "somevalue") return false; // etc. }); 

只需在表单上调用submit即可

 $('#ShoutTweet').submit();