我正在使用带有onsubmit标签的表单。在onsubmit函数中,我将调用ajax,并在成功函数中返回true,在错误部分中返回false。但是表格总是被提交的。
html
<form action="/" method="post" onsubmit="return formsubmit()">脚本
function formsubmit() {
"use strict";
var isBasic = $(".test").val() //this is hidden element
if (isBasic === "true") {
return true;
}
if (isBasic === "false") {
$.ajax({
type: "post",
url: "/",
data: "sample",
success: function (data) {
if (data.success) {
return true;
}
if (!data.success) {
return false;
}
},
error: function () {
}
});
}
}}
这对我不起作用。始终提交表单。请帮我解决这个问题。
发布于 2017-04-07 20:55:56
您希望从"formsubmit“函数返回一个值是正确的,但是您不能从异步调用返回( ajax调用是异步调用)。
重构您的代码以捕获按钮单击,而不是响应表单提交。在按钮单击事件中,执行ajax调用,将一个回调函数传递给ajax调用。在回调函数中,决定是否提交表单。
发布于 2017-04-07 21:09:17
像这样修改你的代码。
function formsubmit() {
"use strict";
var isBasic = $(".test").val(); //this is hidden element
if (isBasic === "false") {
$.ajax({
type: "post",
url: "/",
data: "sample",
success: function (data) {
if (data.success) {
return true;
}
if (!data.success) {
return false;
}
},
error: function () {
}
});
}else{
return true;
}
return false;
}
}发布于 2017-04-07 21:12:40
function formsubmit() {
"use strict";
var isBasic = $(".test").val() //this is hidden element
if (isBasic === "true") {
return true;
}
if (isBasic === "false" && !$(this).attr('submit-suggest')) {
$.ajax({
type: "post",
url: "/",
data: "sample",
success: function (data) {
if (data.success) {
$(this).attr('submit-suggest',1);
$(this).submit();
}
if (!data.success) {
$(this).attr('submit-suggest',0);
}
},
error: function () {
$(this).attr('submit-suggest',0);
}
});
return false;
}
return true;
}https://stackoverflow.com/questions/43278512
复制相似问题