asp.net - 如何获取光标在文本框 VB.NET Web 窗体中的位置

标签 asp.net vb.net

我有一个文本框,我想知道单击按钮时光标的位置(最好是 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/

相关文章:

c# - 存储过程没有参数并且提供了参数

c# - 加入两个模型以将数据放入 View

c# - 图片不在 Chrome 和 FF 上显示

asp.net - 将 ASP.Net 应用程序迁移到 Azure

asp.net - 如何在 ASP.NET 中验证日期

c# - 用于删除单行 SQL 注释的正则表达式 (--)

vb.net - 如何将选中的项目从选中列表框添加到组合框

c# - 数据表 : is deleting old DataRows before inserting new safe?

c# - Windows 手机 8 : Send data to a remoteserver

c# - 需要帮助将 C# 转换为 vb。 "array initializer is missing 1 elements"