Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果未使用我的功能验证电子邮件,则阻止提交表单_Javascript_Html - Fatal编程技术网

Javascript 如果未使用我的功能验证电子邮件,则阻止提交表单

Javascript 如果未使用我的功能验证电子邮件,则阻止提交表单,javascript,html,Javascript,Html,我正在使用一个函数来验证表单中的电子邮件。当用户键入无效电子邮件地址并离开字段框时,该函数会返回错误消息,因此工作正常。然而,即使电子邮件无效,他们仍然可以提交表格 我怎样才能防止这种情况发生 //电子邮件验证和错误消息 函数validateEmail(emailField){ 变量reg=/^([A-Za-z0-9\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/; if(注册测试(emailField.value)==false){ errorEm

我正在使用一个函数来验证表单中的电子邮件。当用户键入无效电子邮件地址并离开字段框时,该函数会返回错误消息,因此工作正常。然而,即使电子邮件无效,他们仍然可以提交表格

我怎样才能防止这种情况发生

//电子邮件验证和错误消息
函数validateEmail(emailField){
变量reg=/^([A-Za-z0-9\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/;
if(注册测试(emailField.value)==false){
errorEmail.innerText='看起来这不是一封电子邮件';
返回false;
}
{
//e.预防违约();
errorEmail.innerText=“”;
返回true;
}
}

在提交时使用表单

w3schools.com/jsref/event_onsubmit.asp

<form onsubmit="return validateEmail(document.getElementById('EmailAddress'))"
    id="form" class="form" action="https://formspree.io/mzbdlwlb" method="POST">

在这种情况下,当表单不应该提交时,validateEmail应该返回false。事实就是这样


即使我将
document.getElementById('EmailAddress')
移动到validateEmail方法中,并且不通过参数传递它。

使用
如果不拦截默认操作,表单将始终发布。有很多方法可以做到这一点。
onsubmit
属性是一个很好的方法,或者您可以将事件侦听器绑定到javascript中的表单。无论您如何触发事件,您都需要包含
preventDefault()
方法,以防止表单发布。有几个选项和许多有用的资源可用。查看MDN:,这个其他的SO答案:,或者甚至这个JS免费建议:这能回答你的问题吗?那不行。
onsubmit
函数没有返回任何内容。太快了,我忘记了返回,是我的错,thanks@jeprubio这确实阻止了表单提交,这很好,但是,如果用户在执行其他操作之前单击提交按钮,则会显示错误,而我希望出现错误(“这不是电子邮件”)只有当用户试图键入电子邮件字段,但没有键入有效的电子邮件时才会出现。@HesamAlavi抱歉,我正在睡觉。您是否已删除输入的
onblur=“validateEmail(this);”
?离开它,那么你需要两个验证。