简单Javascript 文本框验证错误
Simple Javascript text box verification error
我正在尝试检查输入到文本框中的字符长度是否小于 6,如果是,我希望它的背景为红色。不幸的是,我似乎无法弄清楚这个简单问题哪里出了问题。
var textBox = getElementsByName('random');
function checkLength() {
if (textBox.value.length < 6) {
textBox.style.backgroundColor = "red";
}
}
<input type="text" name="random" onfocus="checkLength();">
您的代码中存在一些问题:
- 您需要将
<script>
代码放在末尾,以便在您访问其中的元素之前加载并准备好 DOM。
getElementsByName('random')
需要 document.getElementsByName('random')
,这实际上是 return 一个列表,因此您需要从列表中获取第一个元素。
- 也顺理成章,你需要去掉红色背景一次的文字
输入的长度超过 6,如果将函数附加到
oninput
事件会更好。
<input type="text" name="random" oninput="checkLength();">
<script type="text/javascript">
var textBox = document.getElementsByName('random')[0];
function checkLength() {
if (textBox.value.length < 6) {
textBox.style.backgroundColor = "red";
} else {
textBox.style.backgroundColor = "white";
}
}
</script>
首次加载页面时,名称为 random
的元素不存在。
您需要在页面加载后初始化 textBox
全局 。
您可以通过替换
来做到这一点
var textBox = document.getElementsByName("random")[0]
和
var textBox;
window.onload = function() {
textBox = document.getElementsByName("random")[0]
}
试试这个
// add an id of "random" to your input
function checkLength() {
const textBox = document.getElementById("random")
if (textBox.value.length < 6) {
textBox.style.backgroundColor = "red";
} else {
textBox.style.backgroundColor = "white";
}
}
工作示例:http://jsbin.com/caseqekusi/1/edit?html,js,output
注意:如果你想让方框马上变成红色,你就得稍微修改一下,有问题请告诉我。
我建议也使用 oninput
,这样它会在您输入时更新并在您达到一定长度后立即将字段标记为 "valid"。
您也可以使用 document.activeElement
删除 var textbox = ...
。它使您的函数可重用于其他输入字段。加载代码时不再重要。
function checkLength() {
// Get current focused element
const textBox = document.activeElement;
if ( !textBox.value || textBox.value.length < 6 ) {
textBox.style.backgroundColor = "red";
}
else {
textBox.style.backgroundColor = "#fff";
}
}
<input type="text" name="random" onfocus="checkLength()" oninput="checkLength()">
我正在尝试检查输入到文本框中的字符长度是否小于 6,如果是,我希望它的背景为红色。不幸的是,我似乎无法弄清楚这个简单问题哪里出了问题。
var textBox = getElementsByName('random');
function checkLength() {
if (textBox.value.length < 6) {
textBox.style.backgroundColor = "red";
}
}
<input type="text" name="random" onfocus="checkLength();">
您的代码中存在一些问题:
- 您需要将
<script>
代码放在末尾,以便在您访问其中的元素之前加载并准备好 DOM。 getElementsByName('random')
需要document.getElementsByName('random')
,这实际上是 return 一个列表,因此您需要从列表中获取第一个元素。- 也顺理成章,你需要去掉红色背景一次的文字
输入的长度超过 6,如果将函数附加到
oninput
事件会更好。
<input type="text" name="random" oninput="checkLength();">
<script type="text/javascript">
var textBox = document.getElementsByName('random')[0];
function checkLength() {
if (textBox.value.length < 6) {
textBox.style.backgroundColor = "red";
} else {
textBox.style.backgroundColor = "white";
}
}
</script>
首次加载页面时,名称为 random
的元素不存在。
您需要在页面加载后初始化 textBox
全局 。
您可以通过替换
来做到这一点var textBox = document.getElementsByName("random")[0]
和
var textBox;
window.onload = function() {
textBox = document.getElementsByName("random")[0]
}
试试这个
// add an id of "random" to your input
function checkLength() {
const textBox = document.getElementById("random")
if (textBox.value.length < 6) {
textBox.style.backgroundColor = "red";
} else {
textBox.style.backgroundColor = "white";
}
}
工作示例:http://jsbin.com/caseqekusi/1/edit?html,js,output
注意:如果你想让方框马上变成红色,你就得稍微修改一下,有问题请告诉我。
我建议也使用 oninput
,这样它会在您输入时更新并在您达到一定长度后立即将字段标记为 "valid"。
您也可以使用 document.activeElement
删除 var textbox = ...
。它使您的函数可重用于其他输入字段。加载代码时不再重要。
function checkLength() {
// Get current focused element
const textBox = document.activeElement;
if ( !textBox.value || textBox.value.length < 6 ) {
textBox.style.backgroundColor = "red";
}
else {
textBox.style.backgroundColor = "#fff";
}
}
<input type="text" name="random" onfocus="checkLength()" oninput="checkLength()">