如果已突出显示,如何在文本框中取消选中突出显示的文本?

时间:2012-04-19 18:25:14

标签: javascript jquery asp.net

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

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

..并在点击事件中调用它:

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

问题在于用户在文本框中单击了多少次始终选择了所有文本。我理解为什么会发生这种情况(基于我上面的代码的方式),但是当用户试图单击一个单词的中间以使光标返回以对文本进行修改时,它不能很好地工作。 / p>

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

我正在尝试获取有关.select()方法的文档以查看我是否可以if(!textbox.select()),但我很难找到它,所以如果你有任何文档链接也是如此它们。

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

谢谢!

3 个答案:

答案 0 :(得分:1)

是否有必要在此函数中执行.focus()?你可以改为附上一个简单的.select();到onfocus事件(.bind('focus', function(){..})):http://jsfiddle.net/EGHzj/

答案 1 :(得分: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/

答案 2 :(得分:0)

function selectAllText(textbox) {
    // if there isn't selected text.
    if (textbox[0].selectionEnd) {
        textbox.focus();
        textbox.select();
    }
}

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

Live DEMO