2

所以我有这个非常简单的 JS 函数,可以选择 ASP.NET texbox(输入)中的所有文本:

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

..它在点击事件中被这样调用:

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

问题是无论用户在文本框中单击多少次,所有文本总是被选中。我理解为什么会发生这种情况(基于我上面的代码的方式),但是当用户尝试在单词中间单击以使光标返回以对文本进行修改时,它无法正常工作。

如何修改此 JS 以判断文本是否已突出显示然后取消选择文本?这是在随后单击时,用户可以将单个光标放在精确的单击位置上进行修改。

我正在尝试获取有关该.select()方法的文档以查看是否可以这样做if(!textbox.select()),但是我很难找到它,因此如果您有任何文档链接,请同时发布它们。

编辑:这个问题和解决方法的需要似乎是针对 IE(我使用的是 IE9)。在 Chrome 中,默认情况下的行为是我需要的,但这是针对在 IE 上运行的 Intranet 应用程序,所以看来我需要一个明确的解决方法。

谢谢!

4

3 回答 3

1

有必要在这个函数中做 .focus() 吗?您可以改为附加一个简单的 .select(); 到 onfocus 事件(.bind('focus', function(){..})):http: //jsfiddle.net/EGHzj/

于 2012-04-19T18:55:17.450 回答
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 回答
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 回答