如何检查按键上文本字段的新值?

spu*_*dly 10 javascript keycode onkeypress fromcharcode onkeyup

我有一个表单字段,我需要能够检测字段何时更改并使用字段的值执行一些其他代码.如果按下的键实际上改变了文本框的值,我只想执行代码.这是我提出的解决方案.

function onkeypress(e) {
  var value = this.value;
  // do something with 
}

function onkeyup(e) {
  if ( e.which == 8 || e.keyCode == 46 ) { // delete or backspace keys
    this.onkeypress(e);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是只有一个问题.onkeypress在字段值更新之前被触发,所以当我获取值时,我得到之前的值.如果我知道一种方法来测试密钥是否改变了值,我会专门使用密钥,但是某些字符(如箭头键)对字段的值没有影响.

有任何想法吗?

小智 7

这很简单,只需使用 onkeyup 而不是 onkeypress

  • 您应该考虑添加关于为什么“onkeyup”而不是“onkeypress”可以工作的解释。 (8认同)

Nat*_*e B 2

我这样做的方法只是使用一个类似于prevValue. 在按键函数结束时,将值存储在该变量中,并且仅当该值不等于先前的值时才再次执行该函数。