选择焦点上的文字

时间:2010-01-03 19:55:17

标签: javascript jquery

我有这个功能,它可以点击

选择文字
function select_text(ev) {
    if (this.createTextRange)
    {
        // This is for IE and Opera.
        range = this.createTextRange();
        range.moveEnd('character', this.value.length);
        range.select();
    }
    else if (this.setSelectionRange)
    {
        // This is for Mozilla and WebKit.
        this.setSelectionRange(0, this.value.length);
    }
}

使用:

$('input').click(select_text);

但是我想在文本字段被聚焦时选择文本(当我在另一个文本字段中输入时,它集中了jquery)。

我试过这个:

$('input#id').focus(select_text);

但它没有用。有人可以告诉我如何写这个工作。

编辑:要聚焦和选择的元素添加了ajax!忘了告诉你。香港专业教育学院尝试了这一个,但它没有工作:

$("#settings_view #password #new_password").live('keyup', function(event) {
    if(event.keyCode == 13)
    {
        $("#settings_view #password #password_beam").html('Enter password:<input id="password_confirm" type="password" value="0123456789" />');
        $('input#password_confirm').focus(function (e) {
            var element = this;
            setTimeout(function () {
                select_text.call(element, e);
            }, 0);
        });
    }
});

我也试过这个:

$("#settings_view #password #new_password").live('keyup', function(event) {
    if(event.keyCode == 13)
    {
        $("#settings_view #password #password_beam").html('Enter password:<input id="password_confirm" type="password" value="0123456789" />');
        $('input#password_confirm').live('focus', function (e) {
            var element = this;
            setTimeout(function () {
                select_text.call(element, e);
            }, 0);
        });
    }
});

但它也没有用。一些想法?

2 个答案:

答案 0 :(得分:3)

focus事件发生在click之前,而click事件会导致选择发生变化。

同样,我认为keyupfocus之后发生,当您对字段使用enter或tab并导致相同的副作用时。

这很重要,我知道,但我会这样处理:

$('input').focus(function (e) {
    var element = this;
    setTimeout(function () {
        select_text.call(element, e);
    }, 0);
});

这基本上确保在完成整个焦点更改的事件处理后调用select_text()

答案 1 :(得分:3)

我测试了您的代码,它对我有用:http://jsbin.com/esuwe

如果没有这项更改,它可以正常工作,但如果您始终希望通过tabclick或{{1 }}

focus()功能关闭}之前,添加select_text

return false;

function select_text(evt){ ... return false; } 更改为click

mouseup

这使您的点击无法将选择重置为文本框中的特定位置。