如何打印keyup元素值?

时间:2013-01-27 16:30:39

标签: javascript jquery closures

我正在使用以下keyup事件处理程序。

<script type="text/javascript">
  $('.someClass').on('keyup', function(e){
    console.log($(this).val());
  });
</script>

编写keyup事件时,输入“qwe” 实际结果:“qwe” 期望的结果:
“Q”
“QW”
“QWE”

我在这里简化了,但我也尝试了关闭,这是正确的方法吗?

2 个答案:

答案 0 :(得分:1)

我找到了一个棘手的(丑陋?)解决方案,即使你快速输入也能正常工作:

var prevVal = '';
$('.someClass').on('keypress', function (e) {
    prevVal += String.fromCharCode(e.which);
    console.log(prevVal);
}).on('keyup', function() { prevVal = $(this).val() });

见这里:http://jsfiddle.net/FZHZJ/1/

请注意,它不会在修饰键盘事件上打印(例如退格键,移位键,箭头键) - 如果你想要它也会回复,我会尝试修复它。

答案 1 :(得分:0)

这是我最后使用的闷热。
它在按下时将值推送到数组,并在keyup上弹出它。
(堆栈与反向使用。)

var stackValues = new Array();
$('.someClass').on('keypress', function (e) {
   prevVal = $(this).val();
   prevVal += String.fromCharCode(e.which);
   stackValues.push(prevVal);
}).on('keyup', function() { 
   var value = (stackValues.reverse()).pop();
   stackValues.reverse();
   console.log('value:', value);
});