28

非表示のテキストボックス要素にフォーカスを設定するにはどうすればよいですか?

私はこれを試しました:

document.getElementById("textControl_fd_component_JSON_TASK_NStext64").focus(); 

しかし、これはここでは機能しません。この場合のalert(document.activeElement.id);リターンとしてnull

このフィールドを表示すると、上記のスクリプトは正常に機能します。私が間違っているアイデアはありますか?

4

4 に答える 4

65

本当にこれを行う必要がある場合は、ボックスを非表示ではなく透明にします。

opacity:0;
filter:alpha(opacity=0);

または、ユーザーが誤ってクリックしないようにする場合は、入力を div 内に配置します。

width: 0;
overflow: hidden;

ただし、おそらくkeydown/keypressイベントを使用して、あなたが望むことを行うためのより良い方法があることは間違いありません。

于 2012-06-01T14:06:48.257 に答える
0

回避策が必要で、不透明度属性を変更できない場合は、いくつかの js を追加できます。

/* bind a click handler to your trigger */
jQuery('#your-search-trigger').on('click', function searchIconEventhandler (event) {
    /* in case your field is fading, cheat a little (check css transition duration) */
    setTimeout ( function timeoutFunction () {
        /* show the cursor */
        jQuery('#your-search-input').focus();
    }, 100);
});
于 2015-03-10T15:23:22.760 に答える
0

少なくともIEでは、これは許可されていないと思います。この情報は、jQuery のフォーカス ページから取得しました。

于 2012-06-01T13:47:47.977 に答える
-1

Apsillers の回答を使用すると、この同じ状況に対する私のセットアップには以下が含まれます。

  1. position:relative; を持つ親 div。
  2. 子フォーム要素 position:absolute; z-index:0; 不透明度:0; フィルター: アルファ (不透明度 = 0);
  3. 2 番目の子要素 ​​position:absolute; z-index: (値 > 0) (透明な入力をカバーするように配置)。

Aspillers の答えは、尋ねられた質問を考えると正しいものですが、これが必要な場合の実際的な例を挙げたいと思いました。

具体的には、「ファンシー」な入力 (radio/check 要素、select 要素など) を行うスクリプト/プラグインを使用している場合、フォーム要素を非表示にすることができます。ただし、スクリプトまたはプラグインの記述が不十分な場合、キーボードのアクセシビリティが失われる可能性があります。すべての要素にフォーカスできるようにしてフォームの流れを維持することで、Web サイト ユーザーの頭痛の種を大幅に減らすことができます。

于 2014-01-16T23:11:50.117 に答える