半分まともなブラウザでの一般的なケースに対する答えはすでにあります。古いバージョンのIEでも動作させたい場合に備えて、これは私が以前に準備したハックです。これは、SuckerFishドロップダウンメニューコードに基づいています。これの基本は、次のような:hover
クラスで繰り返すスタイルです。.sfhover
textarea:hover, input[type=text]:hover, input[type=password]:hover, textarea.sfhover, input.sfhover {
border: 1px solid blue;
}
次に、イベントハンドラーとイベントの要素をアタッチする関数INPUT
がTEXTAREA
ありfocus
ますblur
。
function highlightInputs () {
var sfEls = document.getElementsByTagName("INPUT");
for (var i=0; i<sfEls.length; i++) {
if (sfEls[i].type == 'text' | sfEls[i].type == 'password') {
sfEls[i].onfocus=function() {
this.className+=" sfhover";
}
sfEls[i].onblur=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
sfEls = document.getElementsByTagName("TEXTAREA");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onfocus=function() {
this.className+=" sfhover";
}
sfEls[i].onblur=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
コードはIEでのみ実行する必要があるため、ブラウザー間の互換性について心配する必要はありません。次に、ある種のIE検出方法を使用して、IEでのみページの読み込み時に関数を実行します。
if (window.attachEvent) window.attachEvent("onload", highlightInputs);
$.browser.msie
ライブラリがすでにロードされている場合は、条件付きコメントなどのjQueryのテストを使用することもできます。