我有一个文本框,我想知道单击按钮时光标的位置(最好是 textbox.Text 中的字符索引),我想在服务器端使用 VB 执行此操作。
<asp:TextBox ID="txtboxExplanation" runat="server" Height="530px" TextMode="MultiLine" Width="500px" MaxLength="600"></asp:TextBox>
谢谢!
最佳答案
这是您实现目标的方法。我们要做的是当文本区域(多行文本框)失去焦点(onblur)时,我们将尝试获取插入符位置,然后将其放入隐藏字段中,然后您将可以在服务器上访问该字段。
在您的页面上,您需要包含一些 javascript - 取自 [此处][1] 的 getCaret 函数
<script type="text/javascript">
function saveCaretPos(txt) {
document.getElementById('<% =CaretPos.ClientID %>').value = getCaret(txt);
}
function getCaret(el) {
if (el.selectionStart) {
return el.selectionStart;
} else if (document.selection) {
el.focus();
var r = document.selection.createRange();
if (r == null) {
return 0;
}
var re = el.createTextRange(),
rc = re.duplicate();
re.moveToBookmark(r.getBookmark());
rc.setEndPoint('EndToStart', re);
return rc.text.length;
}
return 0;
}
</script>
然后在您的表单中添加一个隐藏的输入字段,这样您就可以轻松地将插入符号位置发送到服务器。
<asp:HiddenField runat="server" ID="CaretPos" />
然后将您的多行文本框调整为:
<asp:TextBox ID="txtboxExplanation" runat="server" Height="530px" TextMode="MultiLine" Width="500px" MaxLength="600" onblur="saveCaretPos(this);"></asp:TextBox>
现在,当您发回服务器时,您可以像这样访问插入符位置
Dim mycaretpos As Integer = CaretPos.Value ' mycaretpos now contains the position the caret was in when the form was submitted.
关于asp.net - 如何获取光标在文本框 VB.NET Web 窗体中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024717/