問題タブ [onblur]
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 - 検索フィールドがフォーカスを失ったときに検索メニューを非表示にしますが、それでもユーザーはリンクをクリックできます
私のウェブサイトには検索ボックス(テキスト入力フィールド)があります。ユーザーがそれをクリックしてテキストの入力を開始すると、リンクのメニューが表示されます。メニューはJQueryを介して表示されます-次のコマンドはメニューを表示します:
ユーザーが検索ボックスをクリックすると、メニューが消えるようにしたいと思います。
これを行う最も簡単な方法は、次のコマンドを使用することです。
ただし、これを行うと、ユーザーがメニュー内のリンクをクリックすると、テキスト入力フィールドのフォーカスが失われるため、ユーザーが選択ページに移動する前にメニューが表示されなくなります。検索フィールドがフォーカスを失ったときにメニューが消えるようにするにはどうすればよいですか(ただし、検索フィールドがフォーカスを失う前にユーザーがリンクをクリックした場合でも、リンクに移動できます)。
javascript - blur()とonblur()
onblurイベントリスナーを含む入力タグがあります。
JavaScriptを介して、この入力でblurイベントをトリガーし、doSomething
関数を呼び出します。
私の最初の考えは、ぼかしと呼ぶことです。
しかし、それは機能しません(エラーはありませんが)。
これは行います:
何故ですか?.click()
onclickリスナーを介して要素にアタッチされたクリックイベントを呼び出します。なぜblur()
同じように機能しないのですか?
javascript - Javascript OnBlur が機能しない
デフォルトで無効になっているテキストボックスがあります... onclickが機能し、入力できるようになりますが、ラジオボタンをクリックすると..テキストボックスが再び無効になりません
手がかりはありますか?
前もって感謝します
リー
javascript - IEで「onblur」ハンドラーを一時的に削除する
ここの誰かが私がこの問題を理解するのを手伝ってくれるのだろうか。
入力フィールドの「onblur」属性のコードを一時的に無効にしてから、再度有効にする必要があります。これを行う必要がある理由は、私のワークフローが次のとおりです。
1)AJAXイベントは、入力フィールドの「onblur」属性によってトリガーされます。これは、ユーザーがフィールドからタブで移動して次のフィールドに移動した結果です。
2)ページが更新され、Javascriptコードが「onafterajax」フックから呼び出されます。
3)私のコードはDOMの深刻な再配置を行っているため、現在の入力フィールドへのフォーカスが失われます。したがって、手動でフォーカスを復元する必要があります。すべての入力フィールドにフォーカスハンドラーをアタッチしたので、最後にフォーカスがあったフィールドを追跡できるので、どこにフォーカスを置くかがわかります。
4)正しい入力フィールドで.focus()を呼び出します。これにより、何らかの理由で' onblurが発生します。'同じ入力フィールドで起動します。これはすべてのブラウザで発生します。これはa)フィールドがまだ焦点を合わせていたことを示唆していますか?!b)ステップ1が再度実行されるため、無限ループを作成します。
無限ループを回避するために、次のことを行いました。DOMの再配置を実行する前に、次のことを行います。
次に、DOMハッカーを完了した後、次のようにします。
これは、IE6を除くすべてのブラウザー(FF、Chrome、Opera)でうまく機能します。
IE6ではそれは一種の働きをします。まず、IEで機能させるには、「setFocusAndRestoreBlur」の呼び出しを次のように変更する必要がありました。
これには、現在のスレッドが終了した後にコードを実行する効果があります。同じスレッドにフォーカスを設定しようとすると、何らかの理由でIEはonblurハンドラーを削除したという事実を尊重しません。
したがって、この変更により、初めていくつかのフィールドにいくつかの数値を入力したときは、すべて問題ありません。次のようなログ出力が得られます。
j_id390に何かを入力し、タブをオフにします。
j_id397に何かを入力し、タブをオフにします。
ただし、最初の入力フィールドに戻り、値を上書きしてタブをオフにすると、次のようになります。
ほとんどの場合、このループは可変数の反復で続き、入力フィールドが正しくフォーカスされた状態で停止します。ループが無限に見える場所を数回見ました。
IEがonblurハンドラーの不在を再び尊重していないように見えますか?でもたまに?!
だから、これは私が混乱しているところです。IEの動作に一貫性がないのはなぜですか?私は何が間違っているのですか?もっと良い方法はありますか?
任意のアイデアをいただければ幸いです。
ヴァル
編集:
JeanKが提案したアプローチを試しました。それでも機能しませんが、この試みから潜在的に役立つことを学びました。
次のように、元の「onblur」関数をプロキシでラップします。
そしてプロキシ機能自体:
さて、私がしなければならないのは、 this.allowBlurを最後のものとして設定することだけです、そして私は大丈夫なはずです。そしてここに問題があります。他のすべてのブラウザーでは、DOMツリーを変更するとonblurイベントが発生するため、正しくブロックされます。しかし、IE6では、私が何をしても、すべてのコードの後にonblurイベントが発生します。私もこれを試しました:
フラグをtrueに設定した後も、this._proxiedBlurが呼び出されます。
したがって、問題は次のようになります-IE6がDOMの変更に反応した後に実行されるように、フラグをリセットする必要があるのはどこですか?
javascript - jQueryonBlurでフォームボックスの値を変更する
onBlurイベントが発生したときに他の入力ボックスの値を変更するjQuery関数を作成しようとしています。以下のコードでは、変更された入力ボックスの値を読み込み、その値を使用して他の入力ボックスの値を操作しようとしています。最終的に、これは変換ユーティリティとして使用されます。私はここにかなり近いように感じます、誰かが助けることができますか?
ありがとう!
javascript - jQuery find(':focus') が期待どおりに動作しない
関数と関数をhover
使用してビューに出入りするウィジェットを作成しています。ただし、フォーカスされたフォーム要素が含まれている場合、ビューから滑り落ちないようにしたいので、これを行っています:showTracker
hideTracker
涼しい。フォーカスのあるフィールドがある場合にマウスが外に出ても、非表示になりません。残念ながら、これは、フィールドがフォーカスを失った場合 (そして、ウィジェットが再び非表示になるとき) に、そこにとどまることも意味します。unHover イベントはなくなりました。
だから私はこれを追加しました:
それもうまくいきます - 助けが必要な小さなバグが 1 つあります。
フォーカスがトラッカー内のある要素から 内にある別の要素に移動する#tracker
と、トラッカーは非表示になります。次のフォーム要素にフォーカスがある場合、false が返されると思いましたif($('#tracker').find(':focus').length == 0)
が、そうではないと思います。
次の要素がフォーカスを得る前に .blur() が発火するのは事実ですか?
どうすればこれを回避できますか?
javascript - 送信はjQueryでtextareaをぼかすべきではありませんか?
ぼかし機能を備えたテキストエリアがあります。
blur()
下の送信ボタンをクリックしたときにこれが発生しないようにします。どうすればこれを解決できますか?
javascript - jQueryブラーイベントのトリガーからページ要素をどのように除外しますか?
<input>
それに焦点を合わせると、提案ドロップダウンが表示されることがあります。他のものがクリックされると、提案は消えます。<div>
問題は、提案がクリックされたときにブラーイベントが実行されないようにすることができないように見えることです。
HTMLの一部を次に示します。
JavaScriptの一部を次に示します。
javascript - tinyMCE ぼかしイベント
こんにちは、ユーザーが tinyMCE テキストエリアへの書き込みを終了し、外側のどこか (onBlur) をクリックしたときに、いくつかの処理を実行したいと考えています。これまでのところ、私は試しました:
また
しかし、それはうまくいきません。
手伝ってくれませんか。
javascript - ある要素のonBlurが別の要素のonclickを「オーバーライド」しているようです
私には2つの要素があります:
動的に作成されたもの(これはすべて自動提案プログラムの一部です):
さて、次にonblur
、入力要素の、次にonclick
div要素のに対応するイベント関数があります。
編集:イベントが最初にdivを非表示onclick
にすることなく、クリックした要素でを正しくトリガーするにはどうすればよいですか?ただし、テキストボックスがフォーカスを失ったときに提案divの機能が消えたままにしておきたいと思います。 onblur
onclick