这是一个简单的代码,我不知道我哪里出错了。如果没有输入名字,名称验证有效,但输入有效名称时不会显示结果。
这是我的代码:
我只是html和javascript的新手,希望我能从这里得到帮助。谢谢
function checkname(form) {
var eobj = document.getElementById('MITname');
var jname = form.Name.value;
var error = false;
eobj.innerHTML = '';
if (jname == '') {
error = "Name is required!";
var error2 = error.fontcolor("red");
}
if (error) {
if (hasFocus == false) {
form.Name.focus();
hasFocus = true;
}
eobj.innerHTML = error2;
return false;
}
return true;
}
function showinput() {
document.getElementById('namedisplay').innerHTML = document.getElementById('MITname').value;
}
function validate() {
hasFocus = false;
var form = document.forms['form'];
var ary = [checkname];
var rtn = true;
var z0 = 0;
for (var z0 = 0; z0 < ary.length; z0++) {
if (!ary[z0](form)) {
rtn = false;
}
}
return rtn;
}
<form action="" name="form" onsubmit="return validate()">
<tr>
<td align="right">Name:<font color="red">*</font>
</td>
<td>
<input type="text" name="Name" /> <span id="MITname"> </span>
</td>
</tr>
<br/>
<input type="submit" value="Submit" onclick="showinput()" />
<br/>
<label>Your input:</label>
<p><span id="namedisplay"></span>
</p>
</form>
答案 0 :(得分:0)
这里几个问题。 (另外,欢迎使用Web开发!)
首先,您实际上从未创建变量hasFocus
。因此,您永远不会真正检查它是否真实。
其次,您创建error2
的位置意味着它只能在创建它的if()
块中访问。因此,当您尝试访问它时,在以下if(error)
块中,它将返回undefined
。
第三,当您创建error
时,您将值设置为false
,这表示布尔类型,但稍后将其值设置为String,这绝对不是布尔值。
第四,var ary = [checkname];
行让我感到困惑。我知道你正在尝试将名称(从输入?)转换为数组,但这不是这样做的方法。您可以使用string.charAt(index)
访问名称的每个字符,因此创建数组并非真正必要。
第五,您的validate()
功能整体非常令人困惑。我不知道你正在尝试做什么。看起来你的教学资源可能会误导你,或者你并没有密切关注。
我可以继续,但是这些问题(以及其他问题)实际上很难找到确切的问题,而不会过多地挖掘它。我不想为你写这个,所以我的建议是重新开始,也许结帐一些教程,也许是从不同的来源。 (不同的youtube频道等)
答案 1 :(得分:0)
我的问题是验证。如果我输入一个空白名称,名称的文本框旁边会出现一条错误消息,表示要输入有效名称。
<!DOCTYPE html>
<html>
<head>
<title>JAVASCRIPT FORM VALIDATION</title>
<script type="text/JavaScript">
function showMessage()
{
var Name = document.getElementById("Name").value;
displayname.innerHTML= Name;
var Email = document.getElementById("Email").value;
displayemail.innerHTML= Email;
var Website = document.getElementById("Website").value;
displaywebsite.innerHTML= Website;
var Comment = document.getElementById("Comment").value;
displaycomment.innerHTML= Comment;
var nameerror='';
var emailerror='';
var websiteerror='';
var commenterror='';
if (displayname.innerHTML=='')
{
nameerror = 'Please enter a valid name';
return false;
}
return true;
}
</script>
</head>
<body>
Name: <input type="text" id = "Name"> <span id = "nameerror"> </span>
<br></br>
Email: <input type="text" id = "Email">
<br></br>
Website: <input type="text" id = "Website">
<br></br>
Comnent: <textarea cols="35" rows="7" id="Comment"> </textarea>
<br></br>
<input type="submit" onclick="showMessage()" value="submit" />
<p>Name: <span id = "displayname"></span> </p>
<p>Email: <span id = "displayemail"></span> </p>
<p>Website: <span id = "displaywebsite"></span> </p>
<p>Comment: <span id = "displaycomment"></span> </p>
</body>
</html>
答案 2 :(得分:0)
<form action="" name="form" onsubmit="return validate()">
<tr>
<td align="right">Name:<font color="red">*</font>
</td>
<td>
<input type="text" name="Name" /> <span id="MITname"> </span>
</td>
</tr>
<br/>
<input type="button" value="Submit" onclick="showinput()" />
<br/>
<label>Your input:</label>
<p><span id="namedisplay"></span>
</p>
</form>
只需删除代码中的type ='submit',它就会提交你的页面,一旦你点击提交数据就会更改为POST,所以使用按钮作为类型