我多年来一直在寻找这个问题的解决方案,我知道没有恢复默认解决方案类型的东西。但这是我的问题。
$('#signInbtn').click(function(event) {
checkLogInForm(event);
});
这会检查字段中的登录信息,以确认它们没有留空,如下所示:
function checkLogInForm(event) {
var usernameValid, passwordValid = false;
checkUsername(usernameValid);
checkPassword(passwordValid);
if (!passwordValid || !usernameValid) {
event.preventDefault();
} else {
$('#signInbtn').unbind('submit');
}
}
但是,我尝试过的众多解决方案从未导致在触发 else 时实际提交表单。我有什么想法可以恢复/提交默认行为吗?甚至是替代方法。感谢您的帮助!
最佳答案
fiddle
一种解决方案是评估是否应应用 PreventDefault 操作:
/**
* toggle status if preventDefaultStatus is true
*/
function updateStatus(preventDefaultStatus) {
return (preventDefaultStatus === true) ? false : true;
}
/**
* toggle preventDefault
*/
function toggleDefault(isActive) {
submitElement.onclick = function(e){
if(isActive === true){
e.preventDefault();
}
}
}
/**
* trigger toggleDefault and updateStatus
*/
function update(){
toggleDefault(status);
status = updateStatus(status);
}
exampleButton.onclick = update;
(function(){
update();
})();
(用纯 JavaScript 编写,以澄清无论您是否使用 jQuery,这都适用) 在 jQuery 中,您只需将 onclick 处理程序替换为 .click(function(e){})
关于javascript - 重新启用 event.preventDefault();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343438/