1

Stack Overflowでこの質問を見つけ、一番上の回答にあるコードを使用しました。

それ以外の点では見事に機能しますが、ねじれがあります。私のページには複数のテキストエリアがあります。実際、私が使用したセレクターはただでした"textarea"

ただし、あるテキスト領域から別のテキスト領域に「タブで移動」すると(Tabキーを使用して次のテキスト領域にジャンプ)、フォーカスイベントが発生せず、テキストが選択されないようです。

クリックとタブの両方で機能するようにそのコードを変更するにはどうすればよいですか?

ここにJSFiddle; http://jsfiddle.net/qQDbZ/ Chromeを使用していますが、テキストエリアをクリックしてもすべてが選択されますが、タブは選択されません。

4

3 に答える 3

5

次の回避策でこれを機能させることができました。

$('textarea').focus(function() {
    var $this = $(this);
    $this.select().mouseup(function() {
        $this.off('mouseup');
        return false;
    });
}).keyup(function(e) {
    if(e.which === 9) {
        this.select();
    }
});

デモ: http://jsfiddle.net/KfFPM/3/

上記を Chrome 21、Safari 6、Firefox 14、Opera 12、IE 9 でテストしました。後でさらに多くのバージョンをテストします。今のところ幸せです。前方へのタブ移動、および後方へのシフト+タブ移動の場合に機能します。

へのバインドがkeydown機能しませんでした。

私はまだ、この回避策は不要だと考えています。私の推測では、Webkit ブラウザーはタブをテキストエリア内のキープレスとして検出し、テキストの選択を解除します。これは、テキストエリアでテキストを選択してから入力を開始した場合と同じように、他のブラウザーと同じです。

于 2012-08-24T18:37:16.703 に答える
2
$('input[type="textarea"]').keydown(function(event){
    var keypressed = event.keyCode || event.which,
    tab = 9,
    $this = $(this);

    if(keypressed === tab){
       $this.next('textarea').focus();
    }
});

問題が何であるか正確にはわかりませんが、解決策を強制する必要がある場合、これは機能するはずです。

于 2012-05-01T18:15:40.940 に答える
0
$('textarea').focus(function() {
    var $this = $(this);
    $this.select();
}).keyup(function(e) {
    if(e.which === 9) {
        this.select();
    }
}).off('mouseup',function(){
    return false;
})
于 2015-04-22T19:11:40.883 に答える