0

我在 asp.net 页面上有一个文本框,我希望没有人不能在文本框的开头插入空格。

例如:“Nick Carter” <----- 格式错误,不应该发生,必须删除空格。

“尼克卡特”<-----正确的格式,

我不知道如何从文本框开始修剪那个白色的sapce。

谢谢

4

4 回答 4

1

一个 JavaScript 解决方案。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script>
        function trimTextBox(sender) {
            // keyCode == 32 is space(' ').
            if ((sender.value.length == 0 || sender.selectionStart == 0) && (window.event.keyCode == 32)){
                return false;
            }
            else if (sender.value.charCodeAt(0) == 32) {
                sender.value = sender.value.substring(1);
            }
            return true;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txt1" runat="server" onkeypress="return trimTextBox(this)"></asp:TextBox>
    </div>
    </form>
</body>
</html>

请注意,这将部分用于粘贴。它不会在粘贴时删除空格,而是在粘贴后的按键上删除。

于 2013-10-08T10:05:06.953 回答
0

由于 Asp.Net 是根据 MVC 模式设计的,因此需要考虑 3 个兴趣点。

  1. 您可能只想在 UI 中限制它。(或查看)
  2. 您可能希望在代码隐藏中限制它。(或控制器)
  3. 您可能希望将其限制在处理数据的业务逻辑中(或多或少的模型)

(1)
对于 UI / View 您可以使用 Field Validator 来完成。您需要的是 Regex 字段验证器。您可以在此处阅读有关如何使用它的信息:

如何:在 ASP.NET 中使用正则表达式来约束输入

(2)
因此,虽然此解决方案将解决 UI 端的问题.. 您可能需要确保您的服务器端控制器也限制了这一点。为此,您可以在 ASPX 代码隐藏中设置对 textbox1.Trim() 的调用或使用正则表达式命令。

(3)
接下来,您的业务逻辑.. 如果您创建了 POCO,您可能希望在接收输入的属性中放置一个验证码,或者如果您更喜欢 POCO 的多功能性,您可以转到您的业务逻辑方法并进行签入就在您即将处理来自输入的信息之前。

如果我是你,我会实现字段验证器并在即将处理信息的 API 方法中进行第二次检查,我宁愿不更改背后的 ASPX 代码或模型道具。
但这当然更多是风格或观点的问题。

于 2013-10-08T09:02:26.820 回答
0

使用以下正则表达式删除空格。

string Result=" Nick Carter";
Result = Regex.Replace(Result, "\\s+", " ");
于 2013-10-08T07:53:50.267 回答
0
private string RemoveSpaces(string text)
        {
            var reg = new System.Text.RegularExpressions.Regex(" +");
            return reg.Replace(text, " ").Trim();            
        }

这适用于所有双空格,以及开始和结束空格

于 2015-11-26T14:06:33.350 回答