ajax オートコンプリートを使用するテキスト入力フィールドがあります。結果は、垂直スクロール バーのある jScrollPane パネルに表示されます。
ユーザーが jscrollPane ドロップダウンのスクロール バーをクリックすると、入力フィールドのブラー イベントが発生する IE 固有の問題が発生しています (スクロール バーの上下矢印は、以下に示すアンカー タグとして生成されます)。
私の理解では、 false を返すとイベントの伝播が停止するはずです。これが、mousedown
とclick
イベントの両方がアンカー タグに対して false を返す理由だと思います。これは Firefox と Chrome では正常に機能しますが、IE では機能しません。
以下には示されていませんが、イベントで次のコードを使用しようとしましたが、役に立ちませんでした。
e.preventDefault ? e.preventDefault() : e.stop();
e.returnValue = false;
e.stopPropagation();
私の最初の質問は次のとおりです。
あるタイプのイベントの伝播を停止すると、他のタイプのイベントの伝播が実際に停止することを期待できますか?
つまり、mousedown
false を返すイベントがトリガーされた場合、これにより、ブラーまたはフォーカス アウト イベントが発生しなくなりますか?
この問題を回避して、IE が Firefox や 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();
}