【发布时间】:2012-09-30 17:52:49
【问题描述】:
我在验证 javascript 中的表单时遇到了困难。我目前只检查一个文本字段,但它不起作用。我的代码如下:
index.html:
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title>
Validation Form
</title>
<script type = "text/javascript" src ="vForm.js">
</script>
</head>
<body>
<form id = "myForm" action ="">
First name: <input type="text" name="fname"></br>
Last name: <input type="text" name="lname"></br>
Password: <input type="password" name="pass1"></br>
Re-enter password: <input type="password" name="pass2"></br>
Email: <input type="text" name="email"></br>
Phone: <input type="text" name="phone"></br>
Address: <input type="text" name="add"></br>
Date: <input type="date" name="date"></br>
Time: <input type="time" name="time"></br>
<input type="reset" name="reset">
<input type="submit" name="submit">
</form>
<script type = "text/javascript" src ="vFormRun.js">
</script>
</body>
</html>
vForm.js:
function validateForm()
{
var fname = document.getElementById("fname");
var lname = document.getElementById("lname");
var pass1 = document.getElementById("pass1");
var pass2 = document.getElementById("pass2");
var email = document.getElementById("email");
if(fname == "")
{
alert("Please enter first name")
return false;
}
else
{
return true;
}
}
vFormRun.js:
document.getElementById("myForm").onsubmit = validateForm;
【问题讨论】:
-
基本的javascript。错过了
.value。 -
离题:您没有指定是否也在服务器端验证数据,但如果您不是,请注意用户可以绕过 JS 验证:它可能会有所帮助,但不应该被认为是安全的。在服务器端也验证相同的数据。
-
这是一个很好的例子,说明调试(通过 Firebug 或 Chrome 等中的等效工具)将非常有用。在
var fname = ...之后的行上放一个断点,你会看到元素有一个property叫做value,里面有正确的东西。学习它,省去很多精力。 -
@RASG 正确,应该是:
var fname = document.getElementById("fname").value; var lname = document.getElementById("lname").value; var pass1 = document.getElementById("pass1").value; var pass2 = document.getElementById("pass2").value; var email = document.getElementById("email").value;
标签: javascript html