使用type=number的asp:Textbox允许输入"e"吗?

3

我目前正在制作一个asp.net网页,其中包含一个asp:TextBox字段,我将该字段设置为type=number,现在只能接受数字,但有一个例外,它也接受字母“e”。是否有人知道是什么原因导致了这种情况,并且如何解决?

<asp:TextBox CssClass="form-control" type="number" id="LotNumber" placeholder="Lotnummer" runat="server" Text="<% $RouteValue:ordernummer %>"/>

所有数字都可以用指数表示法来书写,因此您不应该禁止这种数字书写方式。 - David Ferenczy Rogožan
@DawidFerenczy 好的,由于数字被用作我正在通信的数据库的ID,因此“e”作为输入并不是很有用,因为它不能转换为书写出来的数字。 - FullyHumanProgrammer
3个回答

1

10^20 = 1e+20

这是一种表示方法。我想这就是为什么允许使用“e”的原因。

编辑:

如果你想防止使用“e”、浮点数和负数,你应该像下面这样改变你的ASP文本框:

<asp:TextBox CssClass="form-control" type="text" pattern="[0-9]+" id="LotNumber" placeholder="Lotnummer" runat="server" Text="<% $RouteValue:ordernummer %>"/>

有道理,但我能否防止它接受“e”呢? - FullyHumanProgrammer
它可能也接受浮点数和负数。数字文本框是HTML5的一个特性。如果你使用<input type="text" pattern="[0-9]+" />,除非客户端填写非负整数,否则浏览器将不会提交表单并向客户端显示错误。 - Mehmet B
我尝试了你提供的代码片段,但现在它接受所有字符而不仅仅是0-9。所以这并不是我想要的。 - FullyHumanProgrammer

1
你可以使用 RegularExpressionValidator。
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="Please enter only digits" ValidationExpression="\d+"></asp:RegularExpressionValidator>

我测试了你的解决方案,当我输入“-”时它确实给了我一个错误消息,但它没有在输入“e”时触发... - FullyHumanProgrammer
你在文本框里只输入了'e'吗?我测试了诸如'e'、'1e'等样本,结果出现了相同的验证消息。 - M_Idrees

1
你可以使用JavaScript来实现这个。请查看以下代码:
 <asp:TextBox CssClass="form-control" type="number" id="LotNumber" placeholder="Lotnummer" runat="server" onkeypress="return isNumberKey(event)" Text="<% $RouteValue:ordernummer %>"/>

请将以下代码粘贴到您页面的 标签中:
<SCRIPT language=Javascript>

      function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;

         return true;
      }

   </SCRIPT>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接