1

这是代码:

<html>

<head>
    <script src="jquery-2.0.0.js" type="text/javascript"></script>
    <script>
        function testfn () {
            $('.texta').html('stuff');

            if ($('.texta')[0].createTextRange) {
                var part = $('.texta')[0].createTextRange();
                part.move("character", 0);
                part.select();
            } else if ($('.texta')[0].setSelectionRange) {
                $('.texta')[0].setSelectionRange(0, 0);
            }
            $('.texta').focus();

        }
    </script>
</head>
<body>
<textarea class="texta"></textarea>
<button onclick="testfn();">test</button>
</body>
</html>

按下按钮后,textarea 的值会发生变化并获得焦点。但是光标在文本的末尾。更改值后如何将其移动到此文本区域的开头?

UPD:@San的方法在 Chrome 中运行良好,我仍然需要 FF 的解决方案

UPD2:上面的代码现在可以工作(应该使用$('.texta')[0]而不是$('.texta')

4

3 回答 3

4

你可以试试这个

<script src="jquery-2.0.0.js" type="text/javascript"></script>
    <script>
        function testfn () {
            $('.texta').html('stuff');

           if ($('.texta').createTextRange) {
            var part = $('.texta').createTextRange();
            part.move("character", 0);
            part.select();
            }else if ($('.texta').setSelectionRange){
            $('.texta').setSelectionRange(0, 0);}
            $('.texta').focus();

        }
    </script>
于 2013-08-14T06:25:56.513 回答
3

您可以实现如下

JS

$(function(){
    $("#Test").click(function(){

        $('.texta').focus();
            $('.texta').val('stuff');
        $('.texta').selectRange(0,0);
    });
});

$.fn.selectRange = function(start, end) {
    return this.each(function() {
        if (this.setSelectionRange) {
            this.focus();
            this.setSelectionRange(start, end);
        } else if (this.createTextRange) {
            var range = this.createTextRange();
            range.collapse(true);
            range.moveEnd('character', end);
            range.moveStart('character', start);
            range.select();
        }
    });
};

HTML

<textarea class="texta"></textarea>
<input type="button" id="Test" onClick="testfn();" value="test"></input>

演示

于 2013-08-14T06:17:11.977 回答
2

演示

HTML

<textarea class="texta"></textarea>
<button id="test">test</button>

js

$('#test').click(function () {
    var text = $('.texta');
    text.focus().val('stuff').selectRange(0,0);
});
$.fn.selectRange = function(start, end) {
    if(!end) end = start; 
    return this.each(function() {
        if (this.setSelectionRange) {
            this.focus();
            this.setSelectionRange(start, end);
        } else if (this.createTextRange) {
            var range = this.createTextRange();
            range.collapse(true);
            range.moveEnd('character', end);
            range.moveStart('character', start);
            range.select();
        }
    });
};
于 2013-08-14T06:16:34.417 回答