Javascript 表单提交前的字段验证

Javascript 表单提交前的字段验证,javascript,html,Javascript,Html,我需要验证表单中的电子邮件地址,但需要在验证电子邮件地址后提交表单。所以,真的,我需要一种调用Javascript的方法,它会说“是的,你的电子邮件是有效的(因为在中包含了你要查找的所有常用内容),然后提交表单。我没有办法,我需要表单提交到表单头中的操作 <html> <head> <script> </script> </head> <body> <form method="post" action="/capt

我需要验证表单中的电子邮件地址,但需要在验证电子邮件地址后提交表单。所以,真的,我需要一种调用Javascript的方法,它会说“是的,你的电子邮件是有效的(因为在中包含了你要查找的所有常用内容),然后提交表单。我没有办法,我需要表单提交到表单头中的操作

<html>
<head>
<script>

</script>
</head>
<body>

<form method="post" action="/captiveportal-test.php">
   <input name="email" type="text">
   <input name="redirurl" type="hidden" value="$PORTAL_REDIRURL$">
   <input name="mac" type="hidden" value="$CLIENT_MAC$">
   <input name="ip" type="hidden" value="$CLIENT_IP$">

   <input name="accept" type="submit" value="Continue">
</form>

</body>
</html>

有人知道我如何验证电子邮件地址吗?如果电子邮件地址包含@符号,请提交(这样所有的post值都会执行指定的操作)

谢谢

HTML:

<form id="form" method="post" action="">
    <input class="email" name="email" type="email">
    <input name="accept" type="submit" value="Continue">
</form>

JavaScript:

function validEmail(email) {
    if (!(email && (typeof email === 'string' || email instanceof String))) return false;
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

function addEvent(el, name, fn) {
    if (el.addEventListener) {
        return el.addEventListener(name, fn, false);
    } else if (el.attachEvent) {
        return el.attachEvent('on' + name, fn);
    }
}

function check(e) {
    e.preventDefault();
    if (!validEmail(document.querySelector('.email').value)) {
        alert('Invalid Email');
        return false;
    }
    form.submit();
}

var form = document.getElementById('form');
addEvent(form, 'submit', check);
功能有效邮件(电子邮件){
if(!(email&&(typeof email=='string'| | email instanceof string)))返回false;
变量re=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\'+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.];
返回重新测试(电子邮件);
}
功能补遗(el、名称、fn){
如果(el.addEventListener){
返回el.addEventListener(名称,fn,false);
}否则,如果(见附件){
返回el.attachEvent('on'+名称,fn);
}
}
功能检查(e){
e、 预防默认值();
如果(!validEmail(document.querySelector('.email').value)){
警报(“无效电子邮件”);
返回false;
}
表单提交();
}
var form=document.getElementById('form');
附录(表格“提交”,检查);
演示:另一个解决方案


//JavaScript
window.onload=函数(){
var form=document.forms[0],
模式=/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]-[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
form.onsubmit=函数(){
if(!pattern.test(form.email.value)){
警报(“无效电子邮件”);
返回false;
}
};
};

这看起来非常适合我的需要。我会试试看,不过我愿意接受任何其他建议。对于访问此页面的人来说,带宽是一个额外的费用。