我一直在寻找解决这个问题的时间,我知道没有恢复默认解决方案类型的东西。不过这是我的问题。
$('#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时实际提交的表单。我有什么想法可以恢复/提交默认行为?甚至是另一种方法。谢谢你的帮助!
答案 0 :(得分:1)
一种解决方案是评估是否应该应用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中,你只需用.click替换onclick处理程序(function(e){})
答案 1 :(得分:0)
尝试使用带有表单ID或表单名称的'submit'事件作为jQuery选择器,例如:
$('#signInForm').submit(function(event) {
checkLogInForm(event);
});
如果应提交表单,则checkLogInForm(event)方法可以将else语句保留。