2010-12-12 4 views
2

jQuery live()関数を使用して、フォームテキスト入力の境界線の色を変更して、ユーザーが現在入力している要素をより正確に把握できるようにします。新しいフォーム入力がページに動的に挿入される特定のインスタンスがあるため、を超えるlive()を使用してください。jQuery live()Firefoxでテキストカーソルが表示されない

jQueryを通して読むことdocumentation for live()私は、他のハンドラが実行されないように各ハンドラがfalseを返さなければならないことを理解します。これが実際に何を意味しているのかを誤解しているかどうかにかかわらず、フォーム入力から境界線の色を追加して削除するコードはここにあります。

$('input.highlight').live({ 
    focus: function() { 
     $(this).parent('span').addClass('input-focus'); 
     return false; 
    }, 
    blur: function() { 
     $(this).parent('span').removeClass('input-focus'); 
     return false; 
    } 
}); 

Firefoxの場合を除き、これは完全に機能します。点滅するテキストカーソルは、フォーカスがあるときにフォーム入力内に表示されません。 return false;が削除された場合は表示されます。これは私が遭遇したjQueryのバグでしょうか?

+0

これは、.liveが泡立ち、falseを返すと、チェーンが動作してから上にあるイベントがブロックされます。 – Raynos

+0

ChromeとSafariが境界カラークラスを設定して間違ったFirefoxはそうではありませんか? – greenie

答えて

1

ねえ、同じ問題がありました。私は$(this).focus();を追加することで問題を克服しました。偽を返す前に。

$('input.highlight').live({ 
    focus: function() { 
     $(this).parent('span').addClass('input-focus'); 
     $(this).focus(); 
     return false; 
    }, 
    blur: function() { 
     $(this).parent('span').removeClass('input-focus'); 
     return false; 
    } 
}); 

これが役に立ちます。

関連する問題