問題タブ [javascript-events]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Javascript イベントが予期した順序で起動しない
そこで、現在のプロジェクトでもう 1 つ小さな JavaScript の問題があります。JS イベントが期待どおりの順序で起動されません。
サーバー上で計算を行う AJAX 呼び出しを起動する onBlur イベントを含むテキスト フィールドがあるとします (JSON で .NET 3.5 の WebServices を使用しています)。そのコールバック メソッドは、テキスト フィールドでいっぱいのページに計算結果を入力します。
別の計算を開始する onClick イベントを持つボタンもありますが、onClick イベントの結果が有効になる前に、テキスト フィールドの onBlur イベントを終了する必要があります。
次の状況まで、かなりうまく機能する単純なミューテックスを配置しています。ユーザーがテキストフィールドの1つの値を変更しましたが、まだそこから離れていないため、フォーカスはテキストフィールドに残っています。テキスト フィールドにフォーカスがある間に、onClick イベントを持つボタンをクリックします。 多くの場合、ブラウザ (この場合は IE7) は、テキスト フィールドの onBlur イベントの前に、ボタンの onClick イベントを発生させます。
これは大混乱を引き起こし、発生するイベントの順序を強制する方法がわかりません。私の小さなミューテックスは次のように機能します。いずれかのイベントが発生すると、「コールバックを待機する」ことを意味するフラグを設定します。発生する後続のイベントは、何かを行う前にフラグをチェックします。コールバックで、フラグを false にリセットします。
それで、何かアイデアはありますか?私はほとんどすべての Web サービス呼び出しを同期させたいと思っていますが、それを行う簡単な方法があるかどうかはわかりません。
私が試したこと、または知っておくべきその他のこと: - テキスト フィールドの onBlur のボタンを無効にする - それらの onClick は、無効になる前に起動します - これは、テキスト フィールドを編集してすぐにボタン。ユーザーがボタンをクリックする前に空のスペースをクリックしてテキスト フィールドの onBlur を起動すると、すべてが完全に機能します。
編集:
いくつかのコメントとさらにテストした後、私ができるようにしたいことは次のとおりです。
テキスト フィールドの onBlur で、ボタンを無効にして、その onClick イベントが発生しないようにします。ただし、これをコーディングすると、onBlur イベントが発生し、ボタンが無効になっていることがわかりますが、onClick イベントはまだ発生しています。
ここにいくつかのサンプルコードがあります。 onClick イベントが発生する場合と発生しない場合があります。 setTimeout を 500ms 程度に上げると、常に防止されるようです。たぶんこれはオプションです...
アップデート:
問題の一部を反映するために投稿したコードを更新したので、これをどのようにテストしたかがわかります。テキスト フィールドにフォーカスを置いてボタンをクリックすると、テキスト フィールドの onBlur イベントの前にボタンの onMouseDown イベントが発生します。このため、ボタンをクリックしようとしたことがわかるようにフラグを設定できます。次に、テキスト フィールドの onBlur イベントによって起動された AJAX 呼び出しの onSuccess コールバック イベントで、ボタン フラグが設定されているかどうかを確認し (したがって、ボタンをクリックしようとしたことがわかります)、そのイベントを起動します (他のすべてを無効にして、ボタンがクリックできるようにします)。完了)。この動作が必要なフォーム上のボタンはわずかしかないため、現時点ではこのソリューションで十分だと思います。
javascript - JavaScript を介してバインドされたイベントを特定するにはどうすればよいですか?
重複の可能性:
FireBug (または同様のツール) を使用して Javascript/jQuery イベント バインディングをデバッグする
方法 DOM ノードでイベント リスナーを見つける方法
JavaScript を介して DOM 要素にバインドされたイベントを検出するにはどうすればよいですか? alert
以下の例では、クリック イベントが「クリック可能な」スパンにバインドされていることを確認し、可能であれば -lineからデバッグできるようにしたいと考えています。
Firebug のような Web 開発者ユーティリティでこれを行うことはできますか?
javascript - イベントリスナーの問題
コア JavaScript を学ぼうとして、現在 EventListeners について学んでいます。
私の問題は、以下のコードで EventListener が IE で起動されないことです (Firefox と Chrome で問題なく動作します)。
誰かが私が間違っていることを教えてもらえますか?
私のコードは次のとおりです。
javascript - 開始ウィンドウに onload 関数を追加する
onload
開いているウィンドウに関数を追加する方法は? (ターゲットは「自分」でありwindow.open
、通常のリンクではありません)
か何かで可能onbeforeunload
ですか?onclick
または「通常のリンク」に追加しますか?
私はこのように意味します:
javascript - 作成された要素にイベント ハンドラが適用されない
まあ、タイトルはまったく意味をなさないかもしれません..しかし、とにかく、それを明確にするためにいくつかの簡単なコードを入れます.
JQuery 1.3.2 を使用しています
ここに私のJSがあります
HTML には、ハイパーリンク id='test' と id='result' の div があります。この JS コードに期待するのは、テストをクリックすると、「Hello World」が表示されることです。その後、「Hello World」をクリックすると、「Test #2」が表示されるはずです
どんな提案も非常に役に立ちます...
ありがとうございました。
php - マウスオーバーでチャート
私のウェブサイトにチャートがあります。クライアントサイド機能用のJavaScript関数を追加したいと思います。グラフ上でユーザーがマウスオーバーすると、ツールチップに値が表示されます。出来ますか?誰かが私がこれを行う方法を知ることができますか?私を助けてください。
javascript - Jquery を使用して ModalBox 内でフォーム入力を取得する方法
jQueryを使用してWebサイトを開発しています。プライベート メッセージ機能については、現在、ModalBox (ダイアログ ボックス) を表示しています。そのため、ユーザーがメッセージを確認したいときはいつでも、受信ボックスが表示されたダイアログ ボックスが表示されます。さて、その ModalBox 内に、ユーザーがメッセージを送信できる「作成」セクションがあります。私の質問は、ユーザーがフォームを送信したときに、実際に送信しなくてもそれらの入力を取得するにはどうすればよいですか? なぜなら、私はそれを試したからです...、「submit()」を実行すると、ModalBoxが閉じられました。
どんな助けでも大歓迎です。
javascript - マウスアップ時に保持されたJavascript検出コントロールキー
かなり検索しましたが、満足のいく解決策が見つからないようです。誰かが助けてくれることを願っています。
私は jQuery を使用していますが、何千行もの Javascript も作成しています。したがって、「純粋な」JavaScript ソリューションで問題ありません。
マウスアップイベントでコントロールキーが物理的に押されているかどうかを判断しようとしています。それでおしまい; 他に前提条件はありません。クロスブラウザでこれを確実に行う方法を知っている人はいますか?
キーが押されて離されたときに注意して、これを状態変数に保存しようとしました:
ただし、これは実際には機能しません。firebug を使用してこれをテストし、コンソールを見ると、自動繰り返しが発生しているように見え、値がトグルすることがわかります。
mouseup イベントを調べて、そこに役立つものがあるかどうかを確認しましたが、役に立ちませんでした:
どんな助けでも大歓迎です。
javascript - Javascript - プログラムによるイベントの呼び出し
addEventListener または attachEvent (ブラウザーによって異なります) を使用してオブジェクトにイベントを追加するとします。これらのイベントを後でプログラムで呼び出すことはできますか?
イベント ハンドラーは、次のようなオブジェクトを使用して追加/削除されます。
それとも、各ハンドラーのコピーを保存して、Event.invoke(...) 関数を追加するだけでよいですか?
編集:また、jQueryはオプションではありません:D
javascript - jQuery、引数をイベント ハンドラに渡すにはどうすればよいですか?
イベント ハンドラー関数に引数を渡すにはどうすればよいですか? これにより、ページの読み込み時に関数が実行されますが、これは望ましい効果ではありません。いくつかの異なるテキストボックス、ドロップダウンの組み合わせに対して実行するには、このルーチン「validateText」が必要です。テキスト/ドロップダウンの組み合わせごとに 1 つ作成する代わりに、「validateText」を再利用できますか??