javascript - 如何在 Javascript 中创建灵活的输入字段?
问题描述
我在创建以下情况时遇到问题:
我想创建输入字段,我可以在其中按任意顺序写“1”、“2”或“3”,但每个数字只允许写一次。
重复这三个数字之一并在输入字段中写入除这三个之外的其他数字应该被认为是不好的。
我需要在代码中添加什么?
a = 1
b = 2
c = 3
L = a
L = b
L = c
function F1() {
feedBack = document.getElementById("feedBack");
an = document.getElementById("userAnswer");
L = document.getElementById("L").textContent;
if (an == L) {
feedBack.textContent = "good";
} else {
feedBack.textContent = "bad";
}
}
<input id="userAnswer" type=text>
<input id="userAnswer" type=text>
<input id="userAnswer" type=text>
<button onclick="F1()">check</button>
<label id="L"> </label>
<p id="feedBack"> </p>
解决方案
您可以尝试遍历输入元素,然后验证每个元素,在循环中将输入的值保存在每个输入的集合/数组中,这样我们就有了一个缓存来检查输入字段的值。
function validate() {
let numberEntered = new Set();
let allowedValues = [1, 2, 3];
let inputStatus = false;
let feedBack = document.getElementById("feedBack");
let inputEle = document.querySelectorAll(".number-field");
for (let input of inputEle) {
let value = parseInt(input.value);
if (allowedValues.includes(value) && !numberEntered.has(value)) {
numberEntered.add(value)
} else {
inputStatus = true;
break;
}
}
if (inputStatus) {
feedBack.textContent = "Bad";
} else {
feedBack.textContent = "good";
}
}
<input id="userAnswer1" class="number-field" type=text>
<input id="userAnswer2" class="number-field" type=text>
<input id="userAnswer3" class="number-field" type=text>
<button onclick="validate()">check</button>
<label id="L"> </label>
<p id="feedBack"> </p>
推荐阅读
- arrays - 如果最长的表的长度大于或等于 5,如何将每个表的长度更改为等于最长的表?
- javascript - 如何在 JavaScript Selenium 中使用 jQuery 取消挂起的请求?
- node.js - Google Firebase 功能向物联网设备发送配置
- c - C 打印一个泛型类型向量
- php - MYSQLI 面向对象,我的脚本有什么问题?
- react-native - 任何关于不使用 EXPO 的纯 React Native 的文档?
- python - python matplotlib 自定义图例
- c - C中的#ifndef被忽略?
- c# - 查找特定标签并按编号排序
- php - 将图像存储在数据库或文件管理器之外的某个地方,我可以在其中全局访问它