我正在尝试取消绑定或重新启用防止默认设置,以便我的表单会提交好的数据。
我尝试过多个例子。这是我的代码和我尝试过的一些例子。
此代码非常适合我想要的内容。只是最后一件事,并重新设置我可以实现的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
答案 0 :(得分:7)
不要尝试在验证函数中设置和取消提交处理程序,反之亦然:从单个提交处理程序中调用验证,如果验证失败则仅调用.preventDefault()
:
$(document).ready(function() {
$('#ShoutTweet').submit(function(e) {
if (/* do validations here, and if any of them fail... */) {
e.preventDefault();
}
});
});
如果您的所有验证都通过,请不要致电e.preventDefault()
,然后默认情况下会发生提交事件。
或者,您可以从提交处理程序返回false
以阻止默认值:
$('#ShoutTweet').submit(function(e) {
if (!someValidation())
return false;
if (!secondValidation())
return false;
if (someTestVariable != "somevalue")
return false;
// etc.
});
答案 1 :(得分:5)
我不完全确定你在问什么,但如果你的目标是销毁你的自定义submit
处理程序,那么使用它:
$("#ShoutTweet").unbind("submit");
这假设你有一个普通的(不是Ajax)形式。
答案 2 :(得分:1)
只需在表单上调用提交
即可$('#ShoutTweet').submit();
答案 3 :(得分:0)
这可以肯定地工作,并允许在event.preventDefault();
之后提交表单
$('#your-login-form-id').on('submit', onSubmitLoader);
function onSubmitLoader(e) {
e.preventDefault();
var self = $(this);
setTimeout(function () {
self.unbind('submit').submit(); // like if wants to enable form after 1s
}, 1000)
}