2012-04-08 16 views
2

を派遣し、私は、コンソールのような挙動を達成しようと、私はいくつかのイベントが送出されるまで実行を一時停止する必要がされるまで、私がまさに必要なのはこれです:jQueryの停止実行イベントは[OK]を

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

この仮説的な関数は、ユーザーが "element"要素のキーを押すまで実行を一時停止する必要があります。これは、テキストフィールドに指定されています。その後、ユーザーがそのテキストフィールドの任意のキーを押すと、実行は続行され、evtにはそのイベントに関連する情報が含まれているはずです。

これはjavascriptで実現できますか?またはそのように動作する密接な動作。

答えて

1

アラートとプロンプトを除き、javascriptにはブロックアクションはありません。これを行う唯一の方法は(間違っている可能性があります):

var evt = $("element").on("click",function(){ 
    //Continue here 
}); 
+0

事は、私がここに実現したい動作は警告が、確認し、プロンプトが持っていることと同じであるので、私は、実行をブロックする必要があるということです。ユーザーが何らかのデータを入力するまで待つ必要があります –

+1

代わりに無名関数でデータを処理するのはなぜですか?例えば、 - http://jsfiddle.net/zYej4/ –

0

ただkeydownイベントを使用してください。あなたが達成したいものを正確に行います。キーが押されたときにのみアクションを実行します。

6

JavaScriptで待つことは決してありません。ただ1つのスレッドしかなく、ページの他の部分に入ってくる可能性のある他のイベントを処理する必要があります。

あなたが代わりにやりたいことは、待機したい点の後に起こると思われるものをすべて取り出して、function(){}にパッケージ化することです。 (この機能を「継続」と呼ばれ、あなたはすべてのJavaScriptやその他重く非同期環境での場所にこのパターンに遭遇します。)そこから

、次のjQueryを使用して、新しい関数を登録します:

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

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

keydownの代わりにkeypressを使用することをお勧めしますが、keypress(ほぼ逆説的)はすべてのキーを押さないだけで、何らかのテキスト入力に変わるものです。

+0

問題は、実行をブロックする必要があるということです。ここで達成したい動作は、警告、確認、およびプロンプトと同じですからです。ユーザーがデータを入力するまで待つ必要があります。 –

+0

@Andrés「ブロック実行」と言えば、正しいキー押しイベントが送信されるまで、すべてのユーザー操作のためにWebページをブロックしていると思いますか? – David

+0

私がブロックを意味するとき、私は、警告、プロンプト、確認が持つのと同じ効果を意味します。ある時点でスクリプトを停止したいのですが、ユーザーがテキストフィールドでリターンキーを押すと、そのテキストフィールドの内容でいくつかのことを行います –