我有这个功能,它可以点击
选择文字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);
});
}
});
但它也没有用。一些想法?
答案 0 :(得分:3)
focus
事件发生在click
之前,而click
事件会导致选择发生变化。
同样,我认为keyup
在focus
之后发生,当您对字段使用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
如果没有这项更改,它可以正常工作,但如果您始终希望通过tab
,click
或{{1 }}
在focus()
功能关闭}
之前,添加select_text
return false;
将function select_text(evt){
...
return false;
}
更改为click
。
mouseup
这使您的点击无法将选择重置为文本框中的特定位置。