6

Windows 7 の Firefox 11 でこのコードを実行しています ( http://jsfiddle.net/QStkd/を参照)。

$('<div><input type="text" value="val" /></div>').dialog();

入力の値は選択されていません。これは Chrome と IE で行われますが、手動でselect()メソッドを呼び出しても機能しません。

これは既知の問題ですか? 選択する方法はありますか?タイマーは機能しますが、ロード後に jsfiddle をクリックrunすると機能しなくなります。

4

3 に答える 3

3

focus()Chrome(OS XではIEをテストできません)で(jquery-uiがデフォルトで最初のタブ可能な要素に対して行う)呼び出しは、ボックスに焦点を合わせ、ボックス内のテキストを選択するように見えます。

jquery.dialog.ui.jsから取得:

// set focus to the first tabbable element in the content area or the first button
// if there are no tabbable elements, set focus on the dialog itself
$(self.element.find(':tabbable').get().concat(
    uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
        uiDialog.get()))).eq(0).focus();

一方、Firefoxは、フォーカスを呼び出すときにカーソルをボックス内に置くだけのようです。したがって、目的の操作を実行するには、ダイアログの作成後に暗黙的にselectを呼び出す必要があります。

(実行をクリックするのではなく)タイマーフィドルをリロードすると、例が毎回機能することに気付くでしょう。jsFiddleが実際にここでの原因だと思います(おそらく、hashchangeイベント、または「run」を押した後のペインの1つでのフォーカスイベント-私はそれを深く掘り下げていません)。

編集:(申し訳ありませんが、遅いです)「問題」の根本的な原因はFirefoxのようです。これが設計された動作であるかどうかはわかりませんが、私が見る限り、Firefoxでは同じページの異なるコンテンツペイン内の2つの異なる入力要素でテキストを同時に選択することはできないようです。これはChrome(そしておそらくIE9)には影響しないようです。

2つのiframeが並んでいるローカルの簡単な例を作成しました(左右に呼びましょう)。左側にはテキストエリアが含まれ、右側には投稿したフィドルと同様のjquery-uiダイアログが含まれます。右には次のコードがあります。

<script type="text/javascript">
$('<div><input type="text" value="val" /></div>').dialog();
$('input').select();
</script>

左には次のコードがあります。

<script type="text/javascript">
setTimeout( function() {
    $('textarea').focus();
}, 1000);
</script>

これらをつなぎ合わせてFirefoxで結果を確認すると、左側のテキスト領域がフォーカスされるまで、入力がフォーカスされて選択されていることがわかります。jsFiddleでこれに似たことが起こっているのではないかと思います。

于 2012-04-06T05:07:27.170 に答える
2

openui ダイアログのイベントを使用してみてください。このイベントは、ダイアログが開かれたときにトリガーされます。

$('<div><input id="yourInput" type="text" value="val" /></div>').dialog({
    open:function(){
     $("#yourInput").focus().select();
    }
        }
)

http://jsfiddle.net/sergeir82/A6Wah/8/

http://jsbin.com/etivej/4/

于 2012-04-10T08:54:22.403 に答える
0

これは、DOCTYPE. それを修正する優れた方法はありません。フォーカスするタイマーは「ハックアラウンド」になる傾向があります。ただし、もう 1 つの手順があります。Doctype が w3 xhtml 標準に設定されている場合は、これを使用thisしてフォーカスを選択することができます。入力のプロパティとして追加onfocus="this.select();"して、フォーカスされたときにすぐに選択されるようにします。

于 2012-04-10T14:40:14.993 に答える