试图强制特定文本框重写

时间:2018-06-05 17:17:23

标签: javascript textbox

我偶然发现了这个特殊的代码,虽然我觉得它功能齐全,但我试图挑选它的几个部分,以使其更加用户友好。话虽如此,我试图在每个文本框中强制使用一些值。

第一个文本框应该是仅二进制文本框,只允许0和1。第二个和第四个文本框应该是八进制和十六进制的。我的问题是,如何强制重写这些文本框?我想说的是,我正在寻找一个属性或事件,如果它在文本框中与我想要的不匹配,则会删除我的输入。

如果我在二进制文本框中键入字母或数字,则应将其删除。 如果我在八进制文本框中键入一个大于7的数字或一个字母,则删除。 十六进制=没有A-F以外的字母。十进制,没有字母。我知道如何使用和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 = "" }

  }
 }

1 个答案:

答案 0 :(得分:1)

使用onkeyup事件收听用户在输入框中所做的更改。

您可以使用REGEX表达式检查输入框中的字符串是否仅包含01 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和/或value0将返回1,否则它将返回false