我在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;
答案 0 :(得分:3)
您需要为每个提供.value
。另外,请提供相同id
的{{1}}。
name
答案 1 :(得分:2)
document.getElementById("fname");
仅当您的ID为fname
的元素时才会有效。
您可以将ID属性设置为如下所示的元素:
<input type="text" name="fname" id="fname">
或者,您可以像这样引用表单元素:
var fname = document.forms["myForm"]["fname"]
然后你想在比较时获得它的value
属性。
fname.value
<br>
标记是自动关闭的,因此它应该是<br />
而不是</br>
答案 2 :(得分:-1)
这是解决方案......
function validateForm(form) {
var fname = form.fname,
lname = form.lname,
pass1 = form.pass1,
pass2 = form.pass2,
email = form.email;
if(fname && fname.value === "") {
alert("Please enter first name");
document.getElementById('result').innerHTML = 'Invalid';
return false;
}
document.getElementById('result').innerHTML = 'Passed';
return true;
}
<form id="myForm" action="" onsubmit="validateForm(this)">
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">
<p id="result">
</p>
</form>
我在这里纠正了一些问题。
var
声明以使用一个var
声明。这是最佳做法。fname
的检查,以确保它存在且不为空(防止出现空引用错误)。value
属性,而不是字段本身。在你的旧代码中,如果它是空白的,那么该字段应该在那里并且总是返回true。===
而不是==
。使用==
时,如果值为“false”或0,则返回true。请参阅“Difference between == and === in JavaScript”。alert
声明的末尾错过了分号。if
的正文以return
结尾,则您不需要else
块。减少代码量(下载速度更快)并使其更易于阅读。