繁体   English   中英

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

[英]How to get position of cursor in a textbox VB.NET Web Form

我有一个文本框,我想知道单击按钮时光标的位置(最好是textbox.Text中的字符索引),我想在服务器端使用VB做到这一点。

<asp:TextBox ID="txtboxExplanation" runat="server" Height="530px" TextMode="MultiLine" Width="500px" MaxLength="600"></asp:TextBox>

谢谢!

这是您如何实现所需的方法。 我们要做的是当文本区域(多行文本框)失去焦点(模糊)时,我们将尝试获取插入符的位置,然后将其放置在隐藏的字段中,然后您可以在服务器上对其进行访问。

在您的页面上,您需要包含一些javascript-从[here] [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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM