防止默认后重新启用提交
我试图取消绑定或重新启用防止默认,以便我的表单将提交良好的数据。
我尝试过多个例子。 这是我的代码和我尝试过的一些例子。
这段代码非常适合我想要的。 只是最后一件事并重置我可以在我得到它之后实现的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();