0

次の keyup イベント ハンドラを使用しています。

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

keyup イベントを記述し、「qwe」と入力する場合。
実際の結果: "qwe" 望ましい結果:
"q"
"qw"
"qwe"

ここで単純化しましたが、クロージャーも試しましたが、正しい方法は何ですか?

4

2 に答える 2

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/

モディファイア キーアップ イベント (つまり、バックスペース、シフト、矢印) では出力されないことに注意してください。それも必要な場合は、返信してください。修正を試みます。

于 2013-01-27T16:42:32.893 に答える
0

これは私が最後に使用したsulotionです。
キーが押されたときに値を配列にプッシュし、キーアップ時にポップします。
(スタックはリバースで使用されます..)

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);
});
于 2013-01-28T08:55:58.660 に答える