Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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 JS表单验证不会产生任何结果_Javascript_Html_Forms - Fatal编程技术网

Javascript JS表单验证不会产生任何结果

Javascript JS表单验证不会产生任何结果,javascript,html,forms,Javascript,Html,Forms,我正在学习CodeAcademy的课程,并尝试创建一个简单的HTML表单,用JS验证输入字段。这是我兄弟公司的一个宠物项目的开始(他需要完全重建他的网站) HTML: 电子邮件表格 JS脚本: function validateForm() { var fName = document.email-form.firstname.value; if (fName == null || fName == "") { alert("Please provide

我正在学习CodeAcademy的课程,并尝试创建一个简单的HTML表单,用JS验证输入字段。这是我兄弟公司的一个宠物项目的开始(他需要完全重建他的网站)

HTML:


电子邮件表格


JS脚本:

function validateForm() {
    var fName = document.email-form.firstname.value;
    if (fName == null || fName == "") {
        alert("Please provide your first name!");
        fName.firstname.focus();
        return false;
    }

    var fEmail = document.email-form.email.value;
    var atPos = fEmail.indexOf("@");
    var dotPos = fEMail.lastIndexOf(".");
    if (atPos < 1 || dotPos < atPos + 2 || dotPos + 2 >= fEmail.length) {
        alert("Please enter a valid e-mail address");
        return false;
    }
}
函数validateForm(){
var fName=document.email-form.firstname.value;
如果(fName==null | | fName==“”){
提醒(“请提供您的名字!”);
fName.firstname.focus();
返回false;
}
var fEmail=document.email-form.email.value;
var atPos=女性指数(“@”);
var dotPos=fEMail.lastIndexOf(“.”);
如果(atPos<1 | | dotPos=女性邮件长度){
警报(“请输入有效的电子邮件地址”);
返回false;
}
}
我曾尝试通过在“提交”按钮上使用onclick=返回validateForm();,来解决这个问题,但这也不起作用


任何帮助对于真正想用正确的方法学习的人来说都是非常了不起的。

首先:
文档。电子邮件表单
不起作用,你需要这样使用:
文档['email-form']
。(因为
-
将导致算术计算)

尝试使用浏览器的调试工具,您将看到错误消息


其次,在您的
标记中使用
onsubmit=“return validateForm();”
,而不是在您的
标记中使用。

此代码有几处错误。它背后的想法是正确的,尽管您的函数抛出了几个错误,这会导致函数中断,这意味着它不会返回任何内容

标识符不能包含字符“-”(减号)。它是为减法保留的。您不能在标识符中使用它。表达式
document.email form.firstname.value
被解释为计算。它试图从
文档.email
中减去
form.firstname.value
。这两者都不存在,这会导致引用错误

使用下划线而不是减号,可以在标识符中安全地使用下划线。将表单名称从
电子邮件表单
更改为
电子邮件表单

fName.firstname.focus()
不存在。
fName
是一个字符串(文本输入的内容)。实际上,您要做的是
document.email\u form.firstname.focus()

您的函数应该始终返回一个值。因此,您应该在函数的最后返回true。这不是必需的,但它有助于提高代码的可读性


一旦你解决了所有这些问题,你可以在你的按钮上使用
onClick=“return validateForm()”
,或者在表单上使用
onSubmit=“return validateForm()”

return true在哪里?我想是
电子邮件表单造成了麻烦。标识符中不能使用“-”。它被解释为一种计算(电子邮件形式)。改用
email\u form
作为名称。我知道这是一个迟到的回复,但感谢您的详细回答。几个月后回到这个问题上来,我现在可以看到我犯的错误。@StefanP.DiBella这是出乎意料的。但还是很乐意帮忙:D
function validateForm() {
    var fName = document.email-form.firstname.value;
    if (fName == null || fName == "") {
        alert("Please provide your first name!");
        fName.firstname.focus();
        return false;
    }

    var fEmail = document.email-form.email.value;
    var atPos = fEmail.indexOf("@");
    var dotPos = fEMail.lastIndexOf(".");
    if (atPos < 1 || dotPos < atPos + 2 || dotPos + 2 >= fEmail.length) {
        alert("Please enter a valid e-mail address");
        return false;
    }
}