我在 asp.net 页面上有一个文本框,我希望没有人不能在文本框的开头插入空格。
例如:“Nick Carter” <----- 格式错误,不应该发生,必须删除空格。
“尼克卡特”<-----正确的格式,
我不知道如何从文本框开始修剪那个白色的sapce。
谢谢
一个 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>
请注意,这将部分用于粘贴。它不会在粘贴时删除空格,而是在粘贴后的按键上删除。
由于 Asp.Net 是根据 MVC 模式设计的,因此需要考虑 3 个兴趣点。
(1)
对于 UI / View 您可以使用 Field Validator 来完成。您需要的是 Regex 字段验证器。您可以在此处阅读有关如何使用它的信息:
(2)
因此,虽然此解决方案将解决 UI 端的问题.. 您可能需要确保您的服务器端控制器也限制了这一点。为此,您可以在 ASPX 代码隐藏中设置对 textbox1.Trim() 的调用或使用正则表达式命令。
(3)
接下来,您的业务逻辑.. 如果您创建了 POCO,您可能希望在接收输入的属性中放置一个验证码,或者如果您更喜欢 POCO 的多功能性,您可以转到您的业务逻辑方法并进行签入就在您即将处理来自输入的信息之前。
如果我是你,我会实现字段验证器并在即将处理信息的 API 方法中进行第二次检查,我宁愿不更改背后的 ASPX 代码或模型道具。
但这当然更多是风格或观点的问题。
使用以下正则表达式删除空格。
string Result=" Nick Carter";
Result = Regex.Replace(Result, "\\s+", " ");
private string RemoveSpaces(string text)
{
var reg = new System.Text.RegularExpressions.Regex(" +");
return reg.Replace(text, " ").Trim();
}
这适用于所有双空格,以及开始和结束空格