テキストを含む入力フィールドがあり、その表示を切り替えようとしています。私が遭遇している問題は、フィールド上のスライドアニメーションを切り替えた後、そのテキストが表示されないことです。ただし、フィールドにフォーカスが移されると、テキストが再び表示されます。
これをSafari/IE / FFでテストしたところ、入力テキストは表示されたままですが、Chromeがそれほど奇妙に動作している理由がわかりません。
テキストを含む入力フィールドがあり、その表示を切り替えようとしています。私が遭遇している問題は、フィールド上のスライドアニメーションを切り替えた後、そのテキストが表示されないことです。ただし、フィールドにフォーカスが移されると、テキストが再び表示されます。
これをSafari/IE / FFでテストしたところ、入力テキストは表示されたままですが、Chromeがそれほど奇妙に動作している理由がわかりません。
問題は、jQuery がinline-block
実行時に入力の表示を設定し.slideDown()
、それにより Chrome が正しくレンダリングされないことです。
これは、なぜ Chrome が奇妙な動作をするのかという質問には答えませんが、回避策として、入力を div で囲む場合:
<div id="text"><input type="text" /></div>
次にslideToggle
div:
$(document).on('click', '#slide', function() {
$('#text').slideToggle();
});
それはChromeで動作するようです。
slideDown() のコールバックを入れることで、手動でフォーカスを合わせることができます:
$(this).focus()
使用できるバリアントとして$('input').toggle('slow')