2

わかりましたので、コンソールのような動作を実現しようとしており、何らかのイベントがディスパッチされるまで実行を一時停止する必要があります。正確に必要なのは次のとおりです。

var evt = $("element").waitForKeyDown();

この架空の関数は、テキストフィールドであると想定される「要素」要素でユーザーがキーを押すまで、実行を一時停止する必要があります。次に、ユーザーがそのテキストフィールドで任意のキーを押すと、実行が続行され、evt にそのイベントに関連する情報が含まれる必要があります。

これはjavascriptで達成できますか? またはのように機能する密接な動作。

4

4 に答える 4

6

JavaScriptで待つ必要はありません。スレッドは1つしかないため、ページの他の部分で発生する可能性のある他のイベントを処理するために使用できる必要があります。

代わりにあなたがしたいのは、あなたが待ちたいポイントの後に起こるはずのすべてを取り、それをにパッケージ化することfunction(){}です。(この関数は「継続」と呼ばれ、JavaScriptやその他の高度に非同期な環境の至る所でこのパターンに遭遇します。)

そこから、次のjQueryを使用して新しい関数を登録します。

var evt = $("element").keydown(function(event){
   var keypressed = event.keyCode;

   // do whatever you'd like with the keypress.
});

キーダウンの代わりにキープレスを使用することを検討することもできますが、キープレスは(ほとんど逆説的に)すべてのキープレスを取得するわけではなく、ある種のテキスト入力に変わるキープレスだけを取得します。

于 2012-04-08T18:30:14.320 に答える
1

残念ながら、アラートとプロンプトを除いて、JavaScript にはブロック アクションはありません。これを行う唯一の方法は次のとおりです (ただし、間違っている可能性があります)。

var evt = $("element").on("click",function(){
  //Continue here
});
于 2012-04-08T18:23:23.623 に答える
0

キーダウンイベントを使用するだけです。それはあなたが達成したいことを正確に実行します:キーが押されたときにのみアクションを実行します。

于 2012-04-08T18:29:39.130 に答える
0

jQuery.keyDownhttp : //api.jquery.com/keydown/を使用します

var evt = $("element").keyDown(function(){
  //Rest of your code
});
于 2012-04-08T18:31:29.640 に答える