javascript - 试图强制特定的文本框重写
问题描述
我偶然发现了这个特定的代码,虽然我发现它功能齐全,但我试图挑剔它的几个部分,以使其更加用户友好。话虽这么说,我试图在每个文本框中强制一些值。
第一个文本框应该是纯二进制文本框,只允许 0 和 1。第二个和第四个文本框应该是八进制和十六进制的。我的问题是,如何强制重写这些文本框?我想说的是,我正在寻找一个属性或事件,如果它与我在文本框中想要的不匹配,它会删除我的输入。
如果我在二进制文本框中输入字母或数字,它应该被删除。如果我在八进制文本框中输入大于 7 的数字或字母,则将其删除。十六进制 = 除 AF 外没有其他字母。对于十进制,没有字母。我知道如何使用 if 和其他命名法来排除这些值,但是在为每个文本框执行此操作时,我真的迷失了方向。
这是代码:
window.onload = id;
function id(id) {
return document.getElementById(id);
}
function Convert(s, n)
{
if(parseInt(id(s).value, n))
{
if("bin" != s) { id("bin").value = parseInt(id(s).value, n).toString(2) }
if("oct" != s) { id("oct").value = parseInt(id(s).value, n).toString(8) }
if("dec" != s) { id("dec").value = parseInt(id(s).value, n).toString(10) }
if("hex" != s) { id("hex").value = parseInt(id(s).value, n).toString(16) }
} else
{
if("bin" != s) { id("bin").value = "" }
if("oct" != s) { id("oct").value = "" }
if("dec" != s) { id("dec").value = "" }
if("hex" != s) { id("hex").value = "" }
}
}
解决方案
使用该onkeyup
事件来监听用户在输入框中所做的更改。
您可以使用 REGEX 表达式检查输入框中的字符串是否仅包含0
s 和1
s。如果不是,则删除最后输入的字母:
const check = e => {
const value = e.target.value
const isBinary = /^[0,1]+$/.test(value)
if(!isBinary) {
e.target.value = value.substring(0, value.length - 1);
}
}
<input onkeyup="check(event)">
如果仅包含和/或,/^[0,1]+$/.test(value)
将返回哪里,否则将返回。true
value
0
1
false
推荐阅读
- c++ - 折射方法彼此不一致 - 或 Snell 定律
- installation - 我需要帮助尝试在我的 MacBook 上安装 nestJS
- aws-sdk-cpp - 在为 linux 构建完整的 aws-sdk-cpp 时出现编译错误
- math - 如何判断一个点是否更靠近段的右侧?
- c# - 如何在实例化 à la Revit API 的 TaskDialog 类后以编程方式将按钮添加到窗口
- php - 使用 Livewire 子视图提交数据
- r - 使用 data.table 识别高于固定效应回归的数据点
- javascript - 如何通过客户端事件向网站创建者发送数据
- python - 尝试使用 pip 安装 d3dshot 时出现此错误
- angular - Angular Reactive Form无法将默认日期值分配给datepicker