javascript - JS 表单验证没有结果

标签 javascript html forms

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

HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Email Form</title>
    <link rel='stylesheet' type='text/css' href='style.css'/>
    <link href='http://fonts.googleapis.com/css?family=Alegreya+Sans+SC' rel='stylesheet' type='text/css'>
    <script type="text/javascript" src="script.js"></script>
</head>
<body>
    <form name="email-form" action="#">
        <input type='text' name="firstname" value="First Name" onsubmit="return validateForm();"><br>
        <input type='text' name='email' value="Email"><br>
        <input type='submit' name='submit' value='Get AMPed!'>
    </form>
</body>
</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;
    }
}

我尝试过“return validateForm();”通过在“提交”按钮上使用 onclick= 但这也不起作用。

对于真正想以正确的方式学习的人来说,任何帮助都会非常有用。

最佳答案

这段代码有一些问题。它背后的想法是正确的,尽管您的函数会抛出一些错误,这会导致函数中断,这意味着它不会返回任何内容。

标识符不得包含字符“-”(减号)。它保留用于减法。您不能在标识符中使用它。表达式 document.email-form.firstname.value 被解释为计算。它尝试从 document.email 中减去 form.firstname.value。这两者都不存在,从而导致 ReferenceError

使用下划线代替减号字符,您可以在标识符中安全地使用下划线。将表单名称从 email-form 更改为 email_form

fName.firstname.focus() 不存在。 fName 是一个字符串(文本输入的内容)。您真正想要做的是 document.email_form.firstname.focus()

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

修复所有这些问题后,您可以在按钮上使用 onClick="return validateForm()" 或在按钮上使用 onSubmit="return validateForm()"表格。

关于javascript - JS 表单验证没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20869768/

相关文章:

javascript - Jquery:将同一行上的复选框的值求和到同一行上的文本字段

javascript - jQuery - ReplaceWith 更新 HTML 不会生成图像或链接

javascript - Canvas 边框 HTML5

html - 如何在不更改文本的情况下缩进边框框的两侧

jquery - 将值传递给 jquery 对话框表单

html - 构建表单的正确方法

javascript - Nodejs 页面在 POST 后未重定向

javascript - 如何在页面上显示包含 JSON 对象的数组?

javascript - ExtJS 中的 afterLayout 与布局、afterRender 与渲染等?

php - 如何允许用户在 html 页面上更新数据数据库 SQL