Обработчик Keyup не вызывается для моего элемента ввода - PullRequest
0 голосов
/ 30 мая 2018

Я новичок в javascript, так что это может показаться тривиальным вопросом.Я пытаюсь написать программу на javascript, которая будет вставлять тире в номер телефона, но я не могу заставить свой код работать.Ничего не происходит, когда я использую 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">

Мой редактор имеет проблемы и выделяет материал.Есть ли проблема с одинарными и двойными кавычками?Все ли в порядке?Это выглядит нормально, когда я просматриваю исходный код в Chrome версии 66.

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

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()">
0 голосов
/ 30 мая 2018

Исходя из того, что вы сказали в своем вопросе, это то, что вы хотите:

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()" />
  • вам нужно поставить () после keyup в onkeyup="keyup"
  • , когда вы были concat вundefined
  • вам даже не нужно использовать concat, просто используйте оператор +
  • и замените setAttribute("value", ...) на .value = ....См. этот ответ для получения дополнительной информации
  • используйте событие input вместо keyup.В противном случае, - будет добавлено для каждого нажатия клавиши

Обратите внимание, что это будет ставить - после каждого числа.Если вы хотите что-то другое, что вы, вероятно, делаете, уточните, что вы хотите в своем вопросе.

0 голосов
/ 30 мая 2018

Вы забыли круглые скобки в атрибуте onkeyup.

Кроме того, вы должны объявить строковое значение переменной mystring перед вызовом из нее метода concat.

Что-то вроде:

<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()">
...