2022年5月10日 星期二

[研究][ASP.NET]TextBox / input 限填正整數、0、或不填寫的 HTML5 屬性測試

[研究][ASP.NET]TextBox / input 限填正整數、0、或不填寫的 HTML5 屬性測試

2022-05-10

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

********************************************************************************

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="TextBox1" type="number" runat="server"></asp:TextBox><br />
        <asp:TextBox ID="TextBox2" type="number" min="0" runat="server"></asp:TextBox><br />
        <asp:TextBox ID="TextBox3" type="number" min="0" step="1" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="Send" OnClick="Button1_Click" /><br />
        <asp:Label ID="Label1" runat="server"></asp:Label><br />
        <asp:Label ID="Label2" runat="server"></asp:Label><br />
        <asp:Label ID="Label3" runat="server"></asp:Label><br />
    </form>
</body>
</html>


測試狀況

(下圖) 填寫的時候可以填非整數或負數

(下團) 按下 Send 按鈕後才進行檢查,不是整數會被拒絕



(下圖) 不填是允許的

結論:使用 type="number" min="0" 可達到 限填正整數、0、或不填寫。

註:在某個專案,這招無效,不知道受到甚麼CODE或套件干擾。

********************************************************************************

最大值測試

Int64 是有符號 64 位整數數據類型,相當於 C++ 中的 long long、 C# 中的 long 和 SQL Server 中的 bigint,表示值介於 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之間的整數。

敝人把前面加上1當最大值限制測試

<asp:TextBox ID="TextBox3" type="number" min="0" step="1" 
    max="19223372036854775807" runat="server"></asp:TextBox><br /> 

測試




疑似 19223372036854775807 超過 Int64,被當成科學記號浮點數處理,最大值變成 192233720368547758e+19,尾2數換成99,檢查會通過,表示會先換成科學記號,再比是否符合。

結果:數字若超過 Int64,會先換成科學記號,再比是否符合。

(完)

相關

沒有留言:

張貼留言