【发布时间】:2021-07-29 15:07:34
【问题描述】:
我正在尝试使用 JavaScript 从 Form 标记 内部访问 Label 标记 以进行用户名验证。如果 RegEx 匹配,则在标签中显示错误,否则隐藏该标签。当我尝试更改文本字段上的文本时,出现以下错误。
Uncaught TypeError: can't access property "style", document.forms.form1.uNameError 未定义
我的代码:
<body>
<form name="form1">
// few code here
<div class="main">
<input type="text" id="uname" name="username" onchange="checkUsername()">
<label id="uNameError" style="color: red;">Incorrect name</label>
//few code here
</div>
</form>
<script>
var form=document.forms['form1'];
function checkUsername() {
let username=form["uname"].value.trim();
let validate= /[^a-zA-Z\s]/ig.test(username);
if(validate===true){
form["uNameError"].style.display="inline";
}else {
form["uNameError"].style.display="none";
}
}
</script>
</body>
如果可能,我如何重用我的 form 变量。
【问题讨论】:
-
你可以使用
form.querySelector('#uNameError') -
@ChrisG 这不是我的第一个元素。只是为了演示,我只添加了一些代码。
-
一个
id应该是唯一的,所以如果<label id="uNameError">在表单中的某个地方,我的代码就可以工作。不确定“这不是我的第一个元素”是什么意思?你试过我的代码但它没有工作吗?如果是这样,请在问题中添加minimal reproducible example,以便我指出您的错误 -
您可以将
form["uNameError"]更改为document.getElementById("uNameError"),将form["uname"]更改为document.getElementById("uname").value.trim();,这是最简单的方法。 -
@kattie 表单变量是正确的,但是不能用
document.forms调用label标签。
标签: javascript html css forms