0

クリックすると入力ボックスに変わり、フォーカスするdivを作成しようとしています。これを実現するためにプロトタイプを使用しています。これは Chrome と Firefox の両方で機能しますが、IE では機能しません。IE は、1 秒のタイムアウトを設定しても、新しく追加された入力フィールドにフォーカスすることを拒否します。

基本的に、コードは次のように機能します。

var viewElement = new Element("div").update("text");
var editElement = new Element("input", {"type":"text"});
root.update(viewElement);

// pseudo shortcut for the sake of information:
viewElementOnClick = function(event) {
    root.update(editElement);
    editElement.focus();
}

上記の例は、実際のコードの短縮版です。実際のコードは、IE のフォーカス ビットを除いて正常に動作します。

IE のフォーカス機能に制限はありますか? 入力をフォームに配置する必要がありますか?

4

3 に答える 3

4

私の推測では、focus()を呼び出したとき、IEはまだDOMを更新していません。ブラウザは、スクリプトの実行が終了するまで待ってからDOMを更新する場合があります。

更新してから、

setTimeout("setFocus", 0);

function setFocus()
{
    editElement.focus();
}

もう1つのオプションは、両方のアイテムを常にDOMに存在させ、特定の時間に非表示/表示する必要があるものに応じて、それらのアイテムのstyle.displayを交換することです。

于 2008-09-19T14:15:47.403 に答える
0

質問はすでに26の17によって答えられています。ただ指摘したいのですが、プロトタイプにはこのためのネイティブメカニズムがあります:Function.defer()

于 2008-09-27T04:07:49.720 に答える
0

IEのバージョンは?DocType は何に設定されていますか? それは厳密、標準、または癖モードですか? JavaScript エラーが表示されていますか (ステータス バーの左下に小さな黄色の警告サインがないか確認してください)。[ツール] > [オプション] > [詳細設定] で、すべてのエラーのエラー通知を有効にします。

オイシン

于 2008-09-19T14:08:58.400 に答える