我必须在HTML表单中进行一些验证。我不明白为什么当这两个条件之一是假的时候表格提交。主要'功能是这样的:
var marc = false;
var dnif = false;
window.addEventListener('submit', function () {
marc = marcado();
dnif = nif();
if(marc && dnif){
document.getElementById("formm").submit();
}
}, false);
方法如下:
function nif() {
var campo = document.getElementById("dni_id");
var dni = campo.value;
numero = dni.substr(0, dni.length - 1);
let = dni.substr(dni.length - 1, 1);
numero = numero % 23;
letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
letra = letra.substring(numero, numero + 1);
if (letra !== let) {
alert('El formato del DNI introducido no es el correcto');
document.form.dni_id.focus();
return false;
} else {
return true;
}
function marcado() {
if (document.form.terminado.checked) {
return true;
} else {
alert("Debes aceptar los términos y condiciones");
document.form.terminado.focus();
return false;
}
}
功能正常。当我用控制台尝试它们时,它们工作正常。 然后我执行页面和“警报”。出现并且返回值为false但表单提交。
有什么想法吗?谢谢你的帮助。
答案 0 :(得分:1)
您当前的代码是一个附加到表单提交的侦听器,这意味着一旦表单提交代码运行,您应该绑定到按钮并使用单击,并在该代码块中使用event.preventDefault()来防止自动html表单提交。
或者,您可以更改按钮以键入,按钮而不是提交,并使用html onclick重定向到处理表单提交的javascript函数。
编辑:我认为我错了,你应该能够仍然绑定提交,只要你包括,event.preventDefault();在您的绑定中,表单不应自动提交。但是我的其他解决方案也应该可以正常工作。