0

私はajaxオートコンプリートを使用するテキスト入力フィールドを持っています。結果は、垂直スクロールバーを含むjScrollPaneパネルに表示されます。jQueryオートコンプリート/ jScrollPaneでIEイベントの伝播が期待どおりに動作しない

ユーザーがjscrollPaneドロップダウンのスクロールバーをクリックしたときに入力フィールドのぼかしイベントが発生するIE固有の問題が発生しました(スクロールバーの上下の矢印は、表示されたアンカータグとして生成されます)。以下)。

私が理解しているのはfalseです。なぜなら、mousedownイベントとclickイベントの両方がアンカータグに対してfalseを返す理由は、イベントの伝搬を停止する必要があるからです。これは、FFやChromeでは正常に動作しますが、IEでは正常に動作しません。

以下は示していないが、私はまた私のイベントではなく、無駄に次のコードを使用して試してみました:

は、私は1つ上の伝播を止める期待してください:

e.preventDefault ? e.preventDefault() : e.stop(); 
    e.returnValue = false; 
    e.stopPropagation(); 

私は私の最初の質問は推測します実際に他のタイプのイベントを伝播させないようにするには?

つまり、偽を返すmousedownイベントがトリガされた場合、これにより、ぼかしまたはフォーカスアウトイベントが発生しないようにしますか?

私はこの問題を回避してIEがFFとChromeと同じように動作するようにするにはどうすればよいですか?唯一のあなたの助けを事前に

おかげ

var rf = function() { return false; }; 

$('<a></a>') 
    .attr({'href':'javascript:;', 'className':'jScrollArrowUp'}) 
    .css({'width':settings.scrollbarWidth+'px'}) 
    .html('Scroll up') 
    .bind('mousedown', function() 
    { 
     currentArrowButton = $(this); 
     currentArrowDirection = -1; 
     onArrowMouseDown(); 

     return false; 
    }) 
    .bind('click', rf) 

$("#InputBox").blur(function(e) { 
    hasFocus = 0; 
    if (!config.mouseDownOnSelect) { 
     hideResultsNow(); 
    } 

答えて

0

IEで私のために同じ問題。

数時間の実験とグーグルで、私はぼかしイベントとアクション(リストの隠れ)の間に小さな遅延を使用することに決めました。クリックイベントがトリガーされる時間を与えます。次にクリックイベントハンドラでは、スケジュールされた遅延ブラーイベント処理をチェックする必要があります。その場合は、その処理をキャンセルします。

0

これは3年遅れているが、私はちょうどmousedowne.preventDefault()は(防止にフォーカス選択を防止する)他のブラウザでは何をやってIE≤8を取得する方法、実際にそこにある発見:unselectable属性を設定するには! http://jsbin.com/yagekiji/1

注常にsetTimeout(function() { thingIDidntWantFocusStolenFrom.focus(); })に煮詰める(the other one here含む)常に提案回避策とは異なり、これが初めての場所でmousedownターゲットによって盗まれてからフォーカスを防止することを! unselectableについておかしい何

は、それが継承されていないということですので、それは多くの場合、selectstartイベントの賛成で見落とされています(泡、およびe.preventDefault()た上での選択は防止するが、がフォーカスを防ぐことはできません)、またはすべての上に設定します(the StackOverflow answer that first clued me in that this might be possible、またはTim Downのseriesofnearlyidentical )の子孫要素を使用しますが、実際にはmousedownevent.targetに設定することができます。

(また、jQueryチケット:http://bugs.jquery.com/ticket/10345

関連する問題