简单JavaScript验证不起作用?
不知道为什么这不起作用简单JavaScript验证不起作用?,javascript,html,validation,Javascript,Html,Validation,不知道为什么这不起作用 <!DOCTYPE html> <html> <head> <title>Player 1</title> <link rel="stylesheet" type="text/css" href="playerOne.css"> </head> <body> <div id="heading"> <h>Playe
<!DOCTYPE html>
<html>
<head>
<title>Player 1</title>
<link rel="stylesheet" type="text/css" href="playerOne.css">
</head>
<body>
<div id="heading">
<h>Player 1</h>
</div>
<form name="playerInfo" onsubmit="return validate()" method="post">
<hr>
<fieldset>
<legend>Personal information:</legend>
<label id="inPID">Player ID:</label>
<br>
<input type="text" name="playerid" class="input" id="id" placeholder="Player ID" autofocus >
<br>
<br>
<label id="inFN">First name:</label>
<br>
<input type="text" name="firstname" class="input" id="fname" placeholder="First name" >
<br>
<br>
<label id="inLN">Last name:</label>
<br>
<input type="text" name="lastname" class="input" id="sname" placeholder="Last name" >
<br>
<br>
<label id="inEA">Email address:</label>
<br>
<input type="text" name="email" class="input" id="email" placeholder="Email address">
<br>
<br>
<label id="inPW">Password:</label>
<br>
<input type="password" name="password" class="input" id="pass" >
<br>
<br>
<input type="submit" value="Validate" class="input" id="validate" >
</fieldset>
<hr>
</form>
<div id="error"></div>
<script>
function testVal(){
return false;
}
function validate() {
var message;
var test = true;
message = document.getElementById("error");
message.innerHTML += "";
var x = document.getElementById("id");
if(x.value == ""|| x.value == null||x.value== "Player ID") {
x.style.backgroundColor = "#FF0000";
message.innerHTML += "Player ID is missing\n";
test = false;
}else{
}
var x = document.getElementById("fname");
if(x.value == ""){
x.style.borderColor = "#FF0000";
message.innerHTML += "First name is missing\n";
test = false;
}else{
}
var x = document.getElementById("sname");
if(x.value == "") {
x.style.borderColor ="#FF0000";
message.innerHTML += "Surname is missing\n";
test = false;
}else{
}
var x = document.getElementById("email");
if(x.value == "") {
x.style.borderColor = "#FF0000";
message.innerHTML += "Email is missing\n";
test = false;
}else{
}
var x = document.getElementById("pass");
if(x.value == ""){
x.style.borderColor = "#FF0000";
message.innerHTML += "Password is missing\n";
test = false;
}else{
}
return test;
}
</script>
</body>
玩家1
玩家1
个人资料:
玩家ID:
名字:
姓氏:
电邮地址:
密码:
函数testVal(){
返回false;
}
函数验证(){
var消息;
var检验=真;
message=document.getElementById(“错误”);
message.innerHTML+=“”;
var x=document.getElementById(“id”);
如果(x.value==“”| | x.value==null | | x.value==“玩家ID”){
x、 style.backgroundColor=“#FF0000”;
message.innerHTML+=“缺少玩家ID\n”;
测试=假;
}否则{
}
var x=document.getElementById(“fname”);
如果(x.value==“”){
x、 style.borderColor=“#FF0000”;
message.innerHTML+=“缺少名字\n”;
测试=假;
}否则{
}
var x=document.getElementById(“sname”);
如果(x.value==“”){
x、 style.borderColor=“#FF0000”;
message.innerHTML+=“缺少姓氏\n”;
测试=假;
}否则{
}
var x=document.getElementById(“电子邮件”);
如果(x.value==“”){
x、 style.borderColor=“#FF0000”;
message.innerHTML+=“电子邮件丢失\n”;
测试=假;
}否则{
}
var x=document.getElementById(“pass”);
如果(x.value==“”){
x、 style.borderColor=“#FF0000”;
message.innerHTML+=“缺少密码\n”;
测试=假;
}否则{
}
回归试验;
}
因此,如果输入不正确(或为空),它应该将边框的颜色更改为红色,并在div中通知用户。出于某种原因,代码总是在提交时没有识别错误。我也是JavaScript(和html)的初学者,如果有人对改进这段代码有任何意见,我将不胜感激
编辑:道歉。我上传了错误版本的代码testval函数只是用来检查onsubmit是否正常工作,而validate函数现在被称为onsubmit,它应该在哪里/什么时候工作,但不工作
<!DOCTYPE html>
<html>
<head>
<title>Player 1</title>
<link rel="stylesheet" type="text/css" href="playerOne.css">
</head>
<body>
<div id="heading">
<h>Player 1</h>
</div>
<form name="playerInfo" onsubmit="return validate()" method="post">
<hr>
<fieldset>
<legend>Personal information:</legend>
<label id="inPID">Player ID:</label>
<br>
<input type="text" name="playerid" class="input" id="id" placeholder="Player ID" autofocus >
<br>
<br>
<label id="inFN">First name:</label>
<br>
<input type="text" name="firstname" class="input" id="fname" placeholder="First name" >
<br>
<br>
<label id="inLN">Last name:</label>
<br>
<input type="text" name="lastname" class="input" id="sname" placeholder="Last name" >
<br>
<br>
<label id="inEA">Email address:</label>
<br>
<input type="text" name="email" class="input" id="email" placeholder="Email address">
<br>
<br>
<label id="inPW">Password:</label>
<br>
<input type="password" name="password" class="input" id="pass" >
<br>
<br>
<input type="submit" value="Validate" class="input" id="validate" >
</fieldset>
<hr>
</form>
<div id="error"></div>
<script>
function testVal(){
return false;
}
function validate() {
var message;
var test = true;
message = document.getElementById("error");
message.innerHTML += "";
var x = document.getElementById("id");
if(x.value == ""|| x.value == null||x.value== "Player ID") {
x.style.backgroundColor = "#FF0000";
message.innerHTML += "Player ID is missing\n";
test = false;
}else{
}
var x = document.getElementById("fname");
if(x.value == ""){
x.style.borderColor = "#FF0000";
message.innerHTML += "First name is missing\n";
test = false;
}else{
}
var x = document.getElementById("sname");
if(x.value == "") {
x.style.borderColor ="#FF0000";
message.innerHTML += "Surname is missing\n";
test = false;
}else{
}
var x = document.getElementById("email");
if(x.value == "") {
x.style.borderColor = "#FF0000";
message.innerHTML += "Email is missing\n";
test = false;
}else{
}
var x = document.getElementById("pass");
if(x.value == ""){
x.style.borderColor = "#FF0000";
message.innerHTML += "Password is missing\n";
test = false;
}else{
}
return test;
}
</script>
</body>
编辑2:感谢您对格式和正确标记使用的帮助。我已经根据您的建议对其进行了编辑,但是实际的验证(功能)仍然不起作用,尽管包含引号
参考资料:
查看您的控制台错误 首先是testVal中的一个输入错误-
“retrun”
,而不是“return”
接下来,需要引用字符串,以便x.style.borderColor=#FF0000代码>需要x.style.borderColor=“#FF0000”代码>
除此之外,在提供的代码中,您实际上似乎没有调用validate()
。此外,还可以研究为输入
元素使用占位符
属性,或者(可能更合适)使用标签
元素,而不是将标签放入每个输入值中的方法。查看控制台错误
首先是testVal中的一个输入错误-“retrun”
,而不是“return”
接下来,需要引用字符串,以便x.style.borderColor=#FF0000代码>需要x.style.borderColor=“#FF0000”代码>
除此之外,在提供的代码中,您实际上似乎没有调用validate()
。另外,考虑使用占位符
属性作为输入
元素,或者更合适的是使用标签
元素,而不是将标签放在每个输入的值中。您为JavaScript变量指定了相同的名称x
。我也把你的表格改了一点
一些建议:
a.innerHTML+=“Some string\n”
中的\n
不起作用。改用“
”
请为不同的变量指定不同的名称
使用占位符
属性而不是值
来建议用户
使用message
变量保存错误消息,而不是直接设置innerHtml
,因为Javascript使用传递值(请参阅)
当您更加熟悉Javascript时,您会想要学习。它提供了一个很好的API,可以简化时间编码,并使Html遍历、事件处理和Ajax更加简单。是学习jQuery的好地方
修复了Javascript和Html:
函数验证(){
var message=“”;
var检验=真;
var id=document.getElementById(“id”);
如果(id.value==“”| | id.value==null){
id.style.backgroundColor=“#FF0000”;
消息+=“缺少玩家ID
”;
测试=假;
}否则{
}
var fname=document.getElementById(“fname”);
如果(fname.value==“”| | fname.value==null){
fname.style.borderColor=“#FF0000”;
消息+=“缺少名字
”;
测试=假;
}否则{
}
var sname=document.getElementById(“sname”);
if(sname.value==“”| | sname.value==null){
sname.style.borderColor=“#FF0000”;
消息+=“缺少姓氏
”;
测试=假;
}否则{
}
var email=document.getElementById(“电子邮件”);
如果(email.value==“”| | email.value==null){
email.style.borderColor=“#FF0000”;
消息+=“电子邮件丢失
”;
测试=假;
}否则{
}
var x=document.getE