Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果文本框中已高亮显示,如何取消选择高亮显示的文本?_Javascript_Jquery_Asp.net - Fatal编程技术网

Javascript 如果文本框中已高亮显示,如何取消选择高亮显示的文本?

Javascript 如果文本框中已高亮显示,如何取消选择高亮显示的文本?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,因此,我有一个非常简单的JS函数,用于选择ASP.NET文本框中的所有文本(输入): ..在点击事件中会被这样调用: $("#<%=Textbox1.ClientID %>").click(function () { selectAllText(jQuery(this)) }); $(“#”)。单击(函数(){selectAllText(jQuery(this))}); 问题是,无论用户在文本框中单击多少次,所有文本始终处于选中状态。我理解这是为什么发生的(基于上面我的代码),但

因此,我有一个非常简单的JS函数,用于选择ASP.NET文本框中的所有文本(输入):

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

$("#<%=Textbox1.ClientID %>").click(function () { selectAllText(jQuery(this)) });
$(“#”)。单击(函数(){selectAllText(jQuery(this))});
问题是,无论用户在文本框中单击多少次,所有文本始终处于选中状态。我理解这是为什么发生的(基于上面我的代码),但是当用户试图点击一个单词的中间来让光标返回到文本的修改时,效果不太好。 如何修改此JS以判断文本是否已高亮显示,然后取消选择文本?这是在静态单击时,用户可以在精确单击的位置上获取单个光标以进行修改

我正在尝试获取
.select()
方法的文档,看看如果(!textbox.select()),我是否可以执行
操作,但我很难找到它,所以如果有文档链接,也可以发布

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

谢谢

试试这个

$(document).ready(function(){
    $('input').bind('click',function(){
        if($(this).hasClass('selected')){
            $(this).toggleClass('selected');
        }else{
           this.focus();
           this.select(); 
           $(this).toggleClass('selected');
        }  
    });
});
这应该也适用于IE,


是否需要在此函数中执行.focus()操作?您可以改为附加一个简单的.select();对于onfocus事件(
.bind('focus',function(){..})
):

我正在IE9中测试它,每次单击该框时,都会选中所有内容。对我来说,它永远不会变成一个光标。在Chrome中,它确实起了作用。让我修改我的OP来说明这一点。同样在FF 11.0中,每次选择所有内容时,在Chrome中,第二次单击有效,但所有后续的单击都选择全部。这种行为不太好。初始聚焦后,后续单击不应选择我想象的所有内容。在这一行:
if(window.getSelection().getRangeAt(0.collapsed)
I获得一个“对象不支持此属性或方法`error.@atconway。为我工作很好!有人能确认错误吗?您使用的浏览器是什么?同样在实时演示中,无论单击多少次(IE9),我的文本都不会被选中。@Gordon-感谢您的持续努力,但我在IE9中尝试了您的最新版本,它从未选择文本。@atconway。对不起,伙计,我放弃了。我讨厌
IE
太糟糕了,我花了太多时间来处理我放弃的IE垃圾+1.为了艰巨的任务。。。很抱歉,我帮不了你更多的忙…这很有效!相反,绑定到焦点事件在发布时效果更好。它在IE中可以正常工作。现在真正的解决方案是以某种方式将所有这些示例组合在一起,形成一个工作的IE、Chrome、FF、Safari示例……我真的无法想象绑定到onfocus在任何其他浏览器中都不工作。特别是因为你依赖jQuery的函数,这些函数通常会尽可能地考虑跨浏览器的兼容性。是的,你会这么想,但试试你在Chrome上的例子。它不起作用。然而,我需要一个修复IE和它的工作,所以从技术上说,一个完成的交易!这确实令人惊讶,我想知道是绑定不起作用,还是
.select()
不适用于Chrome。但我认为这是另一个话题:)
$(document).ready(function(){
    $('input').bind('click',function(){
        if($(this).hasClass('selected')){
            $(this).toggleClass('selected');
        }else{
           this.focus();
           this.select(); 
           $(this).toggleClass('selected');
        }  
    });
});
function selectAllText(textbox) {
    // if there isn't selected text.
    if (textbox[0].selectionEnd) {
        textbox.focus();
        textbox.select();
    }
}

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