没有为我的输入元素调用 Keyup 处理程序

Keyup handler is not getting called for my input element

我是 javascript 的新手,所以这似乎是一个微不足道的问题。我正在尝试编写一个 javascript 程序,将破折号插入 phone 数字,但我无法让我的代码工作。当我使用 onkeyup.

时没有任何反应

我是不是做错了什么?到目前为止,似乎只有 onfocus 对我有用。

function keyup() {
  var mystring;
  mystring.concat(document.getElementById('Phone').value, '-');
  document.getElementById('Phone').setAttribute('value', mystring);
}
<input type="text" id="Phone" name="Phone" pattern="\d{3}[\-]\d{3}[\-]\d{4}" placeholder="###-###-####" onkeyup="keyup">

我的编辑器有问题,正在突出显示内容。单引号双引号有问题吗?行中的 returns 行吗?当我在 Chrome 版本 66.

上查看源代码时,它看起来没问题

您忘记了 'onkeyup' 属性上的括号。

此外,在从变量 'mystring' 调用 'concat' 方法之前,您必须声明一个字符串值给变量 'mystring'。

类似于:

<script>
  function keyup() {
  console.log("keyup!!")
    var mystring = "";
    mystring.concat(document.getElementById('Phone').value, '-');
    document.getElementById('Phone').setAttribute('value', mystring);
  }
</script>

<input type="text" id="Phone" name="Phone" pattern="\d{3}[\-]\d{3}[\-]\d{4}" placeholder="###-###-####" onkeyup="keyup()">

function keyup() {
  var mystring = document.getElementById('Phone').value + '-'

  document.getElementById('Phone').value=mystring;
}
<input type="text" id="Phone" name="Phone" pattern="\d{3}[\-]\d{3}[\-]\d{4}" placeholder="###-###-####" onkeyup="keyup()">

根据你在问题中所说的,这就是你想要的:

function keyup() {
  var mystring = document.getElementById('Phone').value;
  document.getElementById('Phone').value = mystring + "-";
}
<input type="text" id="Phone" name="Phone" pattern="\d{3}[\-]\d{3}[\-]\d{4}" placeholder="###-###-####" oninput="keyup()" />

  • 您需要在 onkeyup="keyup"
  • 中的 keyup 之后添加 ()
  • 你正在 concatundefined
  • 您甚至不需要使用 concat,只需使用 + 运算符
  • setAttribute("value", ...) 替换为 .value = ...。有关详细信息,请参阅
  • 使用 input 事件而不是 keyup。否则,每次按下
  • 都会添加一个 -

请注意,这将在 每个 数字之后放置一个 -。如果您想要不同的东西(您可能会这样做),请在您的问题中说明您想要什么。