javascript onkeypressed не дает текущего содержимого текстового поля - PullRequest
0 голосов
/ 26 декабря 2010

У меня есть html-форма, подобная этой:

<form id="boxy" action="layout.html" method="get" accept-charset="utf-8">
  <input type="text" id="a" onkeypress="Boxy.Check(this);">
</form>

Вызывая javascript следующим образом:

Boxy.Check = function() {
    input = document.getElementById(this.currentSelector.id).value;
    console.log("\"" + input + "\"");
};

Однако this.value - это предыдущее значение перед onkeypress.

Например, если я просто наберу "A" в форме, console.log() напечатает "".И если я наберу «AA», console.log напечатает «A».

Есть ли способ получить текущее содержимое ввода?

Ответы [ 2 ]

1 голос
/ 26 декабря 2010

Я думаю, вам нужно использовать onkeyup.

var KeyID = (window.event)? event.keyCode: e.keyCode;

значения для KeyID:

> 16 (Shift)
> 17 (Ctrl)
> 18 (Alt)
> 19 (Pause)
> 37 (Left)
> 38 (Up)
> 39 (Right)
> 40 (Down)

Таким образом, вы можете проверить, нажата ли такая клавиша.

Не проверено, но это должно работать. Пожалуйста, дайте мне знать, если что-то работает не так, как должно.

EDIT: добавлена ​​кросс-браузерная поддержка

0 голосов
/ 26 декабря 2010

Попробуйте использовать getElementById

<input type="text" id="a" onkeyup="Boxy.Check();">

Boxy.Check = function() {
    input = document.getElementById(
        document.getElementById('a').currentSelector.id
    ).value;
    console.log("\"" + input + "\"");
};

, используя совет PeeHaa с unkeyup

...