jQuery实现当文字过多时,完成输入后(失去焦点),显示输入的前面的文字,隐藏后面的文字

与百度搜索条一样。当输入的文字过多时:,当搜索条失去焦点时:即显示最先输入的部分,当搜索条再次获得焦点时:光标位于最后输入的地方并且选中这些文字。这样的功能怎么实现?... 与百度搜索条一样。
当输入的文字过多时:

当搜索条失去焦点时:
即显示最先输入的部分,
当搜索条再次获得焦点时:
光标位于最后输入的地方并且选中这些文字。

这样的功能怎么实现?
展开
 我来答
Zjmainstay
2014-12-24 · 知道合伙人互联网行家
Zjmainstay
知道合伙人互联网行家
采纳数:580 获赞数:1129
http://www.zjmainstay.cn

向TA提问 私信TA
展开全部
首先,select选中的时候,默认是光标从头开始,所以你的第三点是矛盾的,要么光标在最后,
要么选中(光标在前)。

下面附带测试代码:

<!DOCTYPE html>
<html>
<head>
    <title>AAA</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="zh-CN" />
</head>
<body>
<script type="text/javascript" src="http://www.zjmainstay.cn/jquery/jquery-1.8.2.min.js"></script>
<input type="text" size="10" id="test" value="01234567890123456789" />
<script type="text/javascript">
$.fn.setCursorPosition = function(position){
    if(this.lengh == 0) return this;
    return $(this).setSelection(position, position);
}

$.fn.setSelection = function(selectionStart, selectionEnd) {
    if(this.lengh == 0) return this;
    input = this[0];

    if (input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd('character', selectionEnd);
        range.moveStart('character', selectionStart);
        range.select();
    } else if (input.setSelectionRange) {
        input.focus();
        input.setSelectionRange(selectionStart, selectionEnd);
    }

    return this;
}

$.fn.focusEnd = function(){
    this.setCursorPosition(this.val().length);
    return this;
}
$(document).ready(function(){
    $("#test").blur( function() {
        $(this).setSelection(0,0);
    } );
    
    $("#test").focus( function() {
        $(this).focusEnd();
        //$(this).select();
    } );
});
</script>
</body>
</html>
更多追问追答
追问
你的这个代码,我测试了一下,发现点击输入框输入文字后,不能点击其他东西了,焦点一直在输入框那里
追答
什么叫不能点击其他东西?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Charles大男人
推荐于2016-11-09 · 知道合伙人软件行家
Charles大男人
知道合伙人软件行家
采纳数:74 获赞数:163
尽我所能,为你解忧。

向TA提问 私信TA
展开全部
<input id="input1" type="text" value="123456789789" >

    <script>
        var inp=$("#input1")
        inp.on('click',function(){
            inp.select();
        });
    </script>
更多追问追答
追问
第二个条件没有达到,即当输入框失去焦点时,输入框显示最先输入的文字(文字过多超过输入框显示的情况下)
追答
第二个是浏览器的默认行为,不需要自己设置的,你用的什么浏览器,截图来看下
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
270526873
2014-12-24 · TA获得超过338个赞
知道小有建树答主
回答量:110
采纳率:60%
帮助的人:63.3万
展开全部
刚测试了一下,正常的input框就是这样子的呀,这个主要和浏览器有关,您可以换个浏览器试试。
你的这个截图应该是百度的浏览器插件吧,不是百度的搜索框
追问
不是这样的哦,input不设置的话,输入的时候确实是那样的,可是失去焦点时显示的是最后输入的部分,并且用光标调整查看文字的情况下,失去焦点时显示的是当时看到的文字部分。另外,这个只是一个例子,说明这三种情况。我想要的是实现这三种情况的功能,在大部分浏览器上。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式