2020年12月24日 星期四

[研究][ASP.NET]關閉TextBox欄位的「自動完成」(AutoComplete="Off")

[研究][ASP.NET]關閉TextBox欄位的「自動完成」(AutoComplete="Off")

2020-12-24

Visual Studio 2019 v16.8.3 + WebForm + ASP.NET 

在用 GridView1、DetailsView1 做新增、修改功能時,

TextBox 欄位填寫時,有時候滑鼠點下去會自動下拉顯示一項目選擇,

這是 HTML 提供的 「自動完成」(AutoComplete) 功能,預設是啟用 (Enabled, On),

本意是幫助使用者,若有可選的,可省得輸入。

但是當顯示的內容和欄位目的不同 (ex: 姓名欄位出現日期),

被測試者當 Bug 一再回報,就想關了它。

依據

https://docs.microsoft.com/zh-tw/dotnet/api/system.web.ui.webcontrols.autocompletetype?view=netframework-4.8

<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>

改成

<asp:TextBox ID="TextBox1" runat="server" AutoCompleteType="Disabled"></asp:TextBox>

執行後檢視 HMTL 原始碼是

<input name="TextBox1" type="text" autocomplete="off" id="TextBox1" />

但這一次只能改一個欄位

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

另外 DetailsView1 預設使用 <asp:BoundField DataField ,

若使用【編輯欄位】功能把每個欄位都做【將這個欄位轉換為 TemplateField】,

然後每個 TextBox 去加上,太累了。


後來找到一種方可以一次可改一個網頁

<form id="form1" runat="server">

改成

<form id="form1" runat="server" autocomplete="off">


或者 C# Code

protected void Page_Load(object sender, EventArgs e)

{

    this.Form.Attributes.Add("AutoComplete", "Off");

}


若使用 主版頁面 Master Page (ex : Site1.Master)

甚至應該可以關閉正個網站 input / TextBox 欄位的「自動完成」 


而之前從 BoundField 找關閉方法,根本找錯方向。

(完)

相關

HTML <input> autocomplete 屬性

https://www.w3school.com.cn/tags/att_input_autocomplete.asp


沒有留言:

張貼留言