2

したがって、ASP.NET texbox (入力) 内のすべてのテキストを選択するこの非常に単純な JS 関数があります。

function selectAllText(textbox) {
    textbox.focus();
    textbox.select();
}

..そして、クリック イベントで次のように呼び出されます。

$("#<%=Textbox1.ClientID %>").click(function () { selectAllText(jQuery(this)) });

問題は、ユーザーがテキスト ボックス内を何回クリックしても、すべてのテキストが常に選択されていることです。これが発生する理由は理解していますが(上記のコードの方法に基づいて)、ユーザーが単語の途中をクリックしてカーソルを元に戻してテキストを変更しようとすると、うまく機能しません。

この JS を変更して、テキストが既に強調表示されているかどうかを確認し、テキストの選択を解除するにはどうすればよいですか? これはその後のクリックであり、ユーザーはクリックされた正確な場所に単一のカーソルを置いて変更を加えることができます。

メソッドに関するドキュメントを取得して、.select()できるかどうかを確認しようとしていますif(!textbox.select())が、見つけるのに苦労しているため、ドキュメントのリンクがあれば投稿してください。

編集:この問題と回避策の必要性は IE のようです (私は IE9 を使用しています)。Chrome ではデフォルトの動作が必要ですが、これは IE で実行されるイントラネット アプリケーション用であるため、明示的な回避策が必要なようです。

ありがとう!

4

3 に答える 3

1

この関数で.focus()を実行する必要がありますか?代わりに、単純な.select();をアタッチできます。onfocusイベントへ(.bind('focus', function(){..})):http: //jsfiddle.net/EGHzj/

于 2012-04-19T18:55:17.450 に答える
0
function selectAllText(textbox) {
    // if there isn't selected text.
    if (textbox[0].selectionEnd) {
        textbox.focus();
        textbox.select();
    }
}

$('#txt').click(function() {
    selectAllText($(this));
});

ライブデモ </p>

于 2012-04-19T18:38:59.307 に答える
0

これを試して

$(document).ready(function(){
    $('input').bind('click',function(){
        if($(this).hasClass('selected')){
            $(this).toggleClass('selected');
        }else{
           this.focus();
           this.select(); 
           $(this).toggleClass('selected');
        }  
    });
});

これはIEでも動作するはずです http://jsfiddle.net/rAqgw/7/

于 2012-04-19T18:34:35.550 に答える