我想在提交表格后提交表格 我在StackOverflow上看到了一些问题,但没有一个对我有用。
以下是代码:
$(function(){
$("#loginform").submit(function(){
var username = $("#user").val();
$.get( "go.php?action=check_username&username=" + username )
.done(function( data ) {
console.log(data);
if (data.indexOf("ok") >= 0) {$("#loginform").submit();}
else {alert("Username doesn't exist");}
})
return false;
});
});
如果用户名存在,则只是一次又一次地运行ajax,从不提交表单。
提前致谢。
答案 0 :(得分:5)
你的问题是你已经覆盖了$(“#loginform”)。submit(); - 所以即使你尝试从你的javascript代码提交它,你也会再次回到同一个函数。
而是覆盖按钮单击/返回按下的/ etc事件并对其进行比较,而不是在loginform提交上进行比较。现在,您可以在执行检查后自行提交表单。
我实际上这样做的方法是从禁用提交按钮开始,并在各个字段中为文本更改设置监听器。通过监听该字段中的更改来验证输入的每个字段,如果它们有效,则显示勾号(或其他)。
然后,每个字段有效后启用提交按钮。
答案 1 :(得分:1)
替代解决方案
$(function(){
var my_submit_allowed = false;
$("#loginform").submit(function(){
if (my_submit_allowed) return true;
var username = $("#user").val();
$.get( "go.php?action=check_username&username=" + username )
.done(function( data ) {
console.log(data);
if (data.indexOf("ok") >= 0) {
my_submit_allowed=true;
$("#loginform").submit();
}
else {alert("Username doesn't exist");}
})
return false;
});
});
答案 2 :(得分:0)
我认为在这种情况下,jQuery方法 .off()可能会很有用。考虑下面的代码段。这感觉有点hackish,但也很明确和直接:
$('#theForm').submit(function () {
$.when().then(function () {
$('#theForm').off('submit').submit();
});
return false;
});
此外, .submit()的官方API示例演示了它如何非常灵活 - https://api.jquery.com/submit/
答案 3 :(得分:0)
如果您使用的是jQuery,并且单击要提交表单的按钮,则可以取消绑定并重新绑定提交按钮上的Submit事件
if (true) {
$('#submitButton').unbind('submit').bind('submit');
} else {
$('#loginform').on('submit', function(){
return false;
})
}
答案 4 :(得分:-3)
$(function(){
$("#loginform").submit(function(){
var username = $("#user").val();
$.get( "go.php?action=check_username&username=" + username )
.done(function( data ) {
console.log(data);
if (data.indexOf("ok") >= 0) {
return true;
}
else {alert("שגיאה בהתחברות");}
})
return false;
});
});
答案 5 :(得分:-3)
我对代码进行了一些更改。我已将retval添加为TRUE并在每个状态检查retval是否为FALSE。如果是FALSE,如果应该正常提交,IT将不会提交其他内容。
$(function(){
$("#loginform").submit(function(){
var username = $("#user").val();
var retval = true;
$.get( "go.php?action=check_username&username=" + username )
.done(function( data ) {
console.log(data);
if (data.indexOf("ok") >= 0) {
$("#loginform").submit();
retval = true;
} else {
alert("Username doesn't exist");
retval = false;
}
/* If retval is EQ is FALSE then stop submit else if should submit as normal */
if(!retval){
return false;
}
});
});
});