C# 使用字段掩码并将光标强制向左

C# 使用字段掩码并将光标强制向左,c#,asp.net,C#,Asp.net,这与不同,但非常相似 我正在使用ASP.Net,需要或多或少做同样的事情,但我希望它可以在ASP端完成 我的相关代码如下: <td style="line-height: 230%;"> <asp:TextBox ID="txtePro" runat="server" CssClass="textbox" Font-Size="Small" Height="18px" Width="100px" Visible="False" Wrap="False" OnTextCh

这与不同,但非常相似

我正在使用ASP.Net,需要或多或少做同样的事情,但我希望它可以在ASP端完成

我的相关代码如下:

<td style="line-height: 230%;">
    <asp:TextBox ID="txtePro" runat="server" CssClass="textbox" Font-Size="Small" Height="18px" Width="100px" Visible="False" Wrap="False" OnTextChanged="txtEPro_OnLeave" AutoPostBack="true"></asp:TextBox>
    <asp:MaskedEditExtender ID="MeeePro" runat="server" Mask="9999999" MaskType="None" TargetControlID="txtePro" PromptCharacter="_" />
    <asp:MaskedEditExtender ID="MeePRD" runat="server" Mask="999999" MaskType="None" TargetControlID="txtePro" PromptCharacter="_" />
    <asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="txtePro" ID="RevePro" ValidationExpression="^[\s\S]{7,7}$" runat="server" ErrorMessage="7 Digits required." ForeColor="White" Font-Size="X-Small"></asp:RegularExpressionValidator>
    <asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="txtePro" ID="RevPRD" ValidationExpression="^[\s\S]{6,}$" runat="server" ErrorMessage="6 Digits required." ForeColor="White" Font-Size="X-Small"></asp:RegularExpressionValidator>
    <asp:TextBox ID="hdntxtePro" runat="server" CssClass="textbox" Font-Size="Small" Height="18px" Width="100px" Visible="False" Wrap="False"></asp:TextBox>
    <asp:DropDownList ID="ddlCIT" runat="server" AutoPostBack="True" CssClass="textbox" Visible="false" Height="20px" OnSelectedIndexChanged="ddlCIT_SelectedIndexChanged" Width="100px"></asp:DropDownList>
    <asp:TextBox ID="txtCIT" runat="server" CssClass="textbox" Height="18px" Width="100px" Visible="False" Font-Size="Small" Wrap="False"></asp:TextBox>
    <asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="txtCIT" ID="RevCIT" ValidationExpression="^[\s\S]{4,}$" runat="server" ErrorMessage="4 Digits required." ForeColor="White" Font-Size="X-Small"></asp:RegularExpressionValidator>
    <asp:MaskedEditExtender ID="meeCIT" runat="server" MaskType="Number" Mask="99.99" TargetControlID="txtCIT" PromptCharacter="_" InputDirection="LeftToRight" />
    <asp:TextBox ID="txtClientID" runat="server" CssClass="textbox" Height="18px" Width="100px" Visible="False" Font-Size="Small" Wrap="False" OnTextChanged="txtClientID_OnLeave" AutoPostBack="true" MaxLength="5"></asp:TextBox>
    <asp:MaskedEditExtender ID="meeClientID" runat="server" MaskType="Number" Mask="99999" TargetControlID="txtClientID" PromptCharacter="_"  InputDirection="LeftToRight" AutoComplete="False" UserTimeFormat="TwentyFourHour"/>
    <asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="txtClientID" ID="RevClientID" ValidationExpression="^[\s\S]{5,5}$" runat="server" ErrorMessage="5 Digits required." ForeColor="White" Font-Size="X-Small"></asp:RegularExpressionValidator>
    <asp:TextBox ID="hdntxtClientID" runat="server" CssClass="textbox" Height="18px" Width="100px" Visible="False" Font-Size="Small" Wrap="False"></asp:TextBox>
    <asp:TextBox ID="txtElasID" runat="server" CssClass="textbox" Height="18px" Width="100px" Wrap="False" Visible="False" Font-Size="Small"></asp:TextBox>
    <asp:MaskedEditExtender ID="meeElas" runat="server" MaskType="None" Mask="99999999" TargetControlID="txtElasID" PromptCharacter="_" />
    <asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="txtElasID" ID="RevElasID" ValidationExpression="^[\s\S]{8,}$" runat="server" ErrorMessage="8 Digits required." ForeColor="White"></asp:RegularExpressionValidator>
    <asp:TextBox ID="txtEffDate" runat="server" CssClass="textbox" Height="18px" Width="100px" Visible="False" Font-Size="Small" TextMode="Date" Wrap="False"></asp:TextBox>
    <asp:RangeValidator ID="rvDate" runat="server" ControlToValidate="txtEffDate" ErrorMessage="Invalid Date" Type="Date" MinimumValue="01/01/1900" MaximumValue="01/01/2100" Display="Dynamic" ForeColor="White"></asp:RangeValidator>
    <asp:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtEffDate" Format="MM/dd/yyyy"></asp:CalendarExtender>
</td>


在链接问题中,我的问题是当用户点击文本框时,它们有时会从中间开始,我需要光标一直被强制向左移动。是否有一种方法可以从ASP中强制光标一直向左移动,或者这是只能在代码隐藏中完成的操作?

您可以使用TextMode=“Multiline”属性,通过在mouseup事件中将SelectionRange设置为
0,0
,您可以使用
javascript
jQuery
实现这一点:

$(document).ready(function(){
   $(".resetCursor").mouseup(function () {
      this.setSelectionRange(0,0);    
   });
});

然后将类
resetCursor
添加到要使用此行为扩展的
TextBox
控件中

<asp:TextBox ID="txtePro" runat="server" 
   CssClass="textbox resetCursor" 
   Font-Size="Small" 
   Height="18px" 
   Width="100px" 
   Visible="False" 
   Wrap="False" 
   OnTextChanged="txtEPro_OnLeave" 
   AutoPostBack="true">
</asp:TextBox>

您可以在javascript中使用createTextRange方法来移动光标位置。以下功能将帮助您移动位置以启动

function setCaretPosition(elemId) {
var inputEle = document.getElementById(elemId);

if (inputEle != null) {
    if (inputEle.createTextRange) {
        var range = inputEle.createTextRange();
        range.move('character', -1);
        range.select();
    }
    else {
        if (inputEle.selectionStart) {
            inputEle.focus();
            inputEle.setSelectionRange(0, 1);
        }
        else
            inputEle.focus();
    }
  }
}

这个答案使用了jQuery-我希望您知道,否则这不好:)如果您知道的话-使用Ovm的answer只需修复ASP.NET标记,如
CssClass=“textbox resetCursor”
,或者使用带有so的jQuery进行编程即可

如果你不熟悉,那么,你必须尽快开始学习它


另外,最初我打算添加注释以供回答,但我未能在此处使用迷你标记格式化代码示例并且不要忘记学习\refresh有关使用的信息,因为这是非常重要的,而且,这对于不仅使用jQuery,而且使用HTML都非常重要。希望有帮助:)

如果需要,我会接受使用Javascript的答案。只要行得通。我们使用的是IE9,我知道它与Ctrl+V有一些问题,因为我试图通过同时禁用右键单击来解决这个问题,但是Ctrl+V在带有掩码的字段中不起作用。这不是您想要的吗:?您是否尝试运行this.setSelectionRange(0,0);焦点事件?您是否可以编辑您的答案以解释如何/在文本框上使用resetCursor?我对它不熟悉,而且我在网上找到的示例似乎不起作用。@JohnnyBones您似乎不熟悉jQuery!?:)@JohnnyBones我为
TextBox
添加了一个示例,以及如何在控件的
CssClass
属性中分配css类。
$(document).ready(function(){//once DOM is loaded
   $(".textbox").addClass('resetCursor');
   $(".resetCursor").mouseup(function () {
      this.setSelectionRange(0,0);    
   });
});