【发布时间】:2015-01-08 04:50:51
【问题描述】:
我正在做的是验证用户输入。目前,我只是验证名称以确保名称至少有 6 个字符长。我将添加更多验证,但我什至无法为此显示错误。如果脚本在 HTML 页面上,它确实有效,但我想要它在外部,因为我有很多需要添加。
当我在 HTML 页面上的标签之间有 js 时,它可以工作:如果输入的字符少于 6 个,它会显示由 CSS “txtNameError”隐藏的内容。
当我将 js 放在外部 .js 文件中时,它不起作用:如果少于 6 个字符,它不会将其更改为可见。
但是,代码是一样的吗?
这是“名称部分”的基本 HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Registration Form</title>
<link type="text/css" rel="stylesheet" href="week12.css" />
<script type="text/javascript" src="validate.js"></script>
</head>
<body>
<div class="form">
<table>
<tr>
<td><input type="text" name="txtName" id="txtName" placeholder="Name" /></td>
<td><p class="error" id="txtNameError">Name must be at least 6 characters long.</p></td>
<!--The p class "error" is set to hidden visibility using the CSS page. If they don't meet the requirements, then "txtNameError" becomes visible.-->
</tr>
<!--OTHER USER INPUT, THAT I'M NOT YET INCLUDING (just working on the name part now)-->
<tr>
<td><button onclick="validateForm();">Register</button></td>
</tr>
</table>
</div>
</body>
</html>
如果我的函数有下面的标签,它就可以工作:它使 txtNameError 可见。但是当我将我的函数放在 validate.js 上时,它根本不起作用。
<script>
function validateForm() {
var name = document.getElementById('txtName').value;
var nameLength = name.length;
if (nameLength < 6) {
document.getElementById("txtNameError").style.visibility = "visible";
}
}
</script>
当我在 HTML 页面中有它时,我包含标签,当它在它自己的 validate.js 中时,我不包含脚本标签。
【问题讨论】:
-
调试的时候,这个函数到底被调用了吗? JavaScript 控制台是否有错误?在调试器中单步执行代码,具体在哪里失败?元素找到了吗?是否设置了它们的属性?
-
fucntion validateForm()只是一个错字,还是你的代码真的这么说? -
我正在使用记事本++。但我尝试在 javascriptlint.com 上检查代码并没有出现错误。
-
@OskarHane 这是一个错字!对不起。它是“功能”。当我在 HTML 页面上的脚本标记之间有代码时,它可以工作。当我将函数 validateForm() 复制到外部 .js 文件时,它不起作用。
标签: javascript html css validation visibility