【发布时间】:2020-05-24 19:37:50
【问题描述】:
最后,我设法做到了:
function validar(dato_a_validar, url, secc)
{
var datastr = "secc=" + secc + "&dato=" + dato_a_validar;
return new Promise(function(resolve, reject) {
$.ajax({
type:'GET',
url:url,
data:datastr,
success:function(response) { resolve(response); },
error:function(response) { reject(response); }
});
});
}
async function check_submit()
{
init(); // sets some global variables
errores_personal_cnt = 0; // error counter
var dni_ctl = document.getElementById("frm_funcionario_dni");
var dni = dni_ctl.value;
dni_ctl.style.borderColor = "black";
dni_ctl.style.backgroundColor = "none";
const estado = await validar(dni, url_validacion, "dni")
.then(salida => estadoValidacion(dni_ctl, salida)) // estadoValidacion() sets some colour and form control title
.catch(error => estadoValidacion(dni_ctl, "error"));
$.when(estado).done(console.log("Errores: " + errores_personal_cnt));
return false; // this is set for tests purposes, but is always ignored.
}
在onsubmit 事件中,async function check_submit() 被调用。 validar(...) 函数返回一个 promise(我猜),并使用 .then() 和 .catch() y handle 两个结果。但是,即使有错误的字段,也会提交表单。
我认为表单总是提交的原因是因为我在某处有一些错误的代码,但我不知道在哪里。
谢谢!
【问题讨论】:
-
ajax调用是用来向服务器提交数据还是仅仅做表单验证?
-
只是表单验证。如果所有字段都正确,计数器
errores_personal_cnt == 0和check_submit()应该return true;并提交。
标签: javascript ajax promise onsubmit