我有一个文本框,当我对焦时,我希望光标转到文本框的末尾。
不断出现的解决方案只是
this.value = this.value
我用一个简单的方法尝试了这个:
function InputClicked(element) {
element.className = "inputfocused";
element.value = element.value;
}
但奇怪的是,这似乎是转到结尾,然后跳到文本框的开头。
答案 0 :(得分:10)
此JSFiddle向您展示了它的工作原理。在这个例子中,jQuery已被用于简化,但如果需要,可以完全省略它。无论如何,setSelectionRange
函数是一个DOM函数。
一般来说,它会这样做:
input.focus();
input.setSelectionRange(inputValueLength, inputValueLength);
可以使用DOM功能或使用库函数(如jQuery中)获取输入及其值长度。
我没有在其他浏览器中测试过,但是在Chrome中运行它可以设置比实际位置更大的位置,并且插入符号将位于最后。如下所示:
input.setSelectionRange(1000,1000);
将按预期工作(假设您的文字短于1000个字符。:)
注意 :IE8及更早版本不支持此功能。最常用的浏览器的所有最新版本都支持它。对于旧版本的IE,请使用文本范围。
答案 1 :(得分:5)
您需要使用输入的selectionStart
和selectionEnd
属性或setSelectionRange()
方法移动插入符号。 IE< 9虽然不支持这些,但您需要在这些浏览器中使用输入的createTextRange()
方法。
代码:
function moveCaretToEnd(el) {
el.focus();
if (typeof el.selectionStart == "number") {
el.selectionStart = el.selectionEnd = el.value.length;
} else if (typeof el.createTextRange != "undefined") {
var range = el.createTextRange();
range.collapse(false);
range.select();
}
}
答案 2 :(得分:2)
简单而且100%工作
static string path;
path = Server.MapPath("~/Styles/images/");
private static void PrepareControlForExport(Control control)
{
for (int i = 0; i < control.Controls.Count; i++)
{
Control current = control.Controls[i];
if (current is LinkButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
}
else if (current is ImageButton)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
}
else if (current is HyperLink)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
}
else if (current is DropDownList)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
}
else if (current is CheckBox)
{
control.Controls.Remove(current);
control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "<br><img src='" + path + "checked.png' alt=''width='15' height='15' float='right' />" : "<br><img border='10' src='" + path + "unchecked.png' alt=''width='15' height='15' float='right' />"));
current.Visible = true;
}
if (current.HasControls())
{
VesselDetails.PrepareControlForExport(current);
}
}
}