1. 程式人生 > >表單元素input type=”hidden”的作用

表單元素input type=”hidden”的作用

隱藏域在頁面中對於使用者是不可見的,在表單插入中隱藏域的目的在於收集和傳送資訊,以利於被處理表單的程式所使用
注:隱藏只是在網頁頁面上不顯示輸入框,但是雖然隱藏了,還是具有form傳值功能。一般用來傳值,而不必讓使用者看到。

基本語法:

<input type="hidden" name="field_name" value="value" />

作用

1、隱藏域在頁面中對於使用者是不可見的,在表單中插入隱藏域的目的在於收集或傳送資訊,以利於被處理表單的程式所使用。瀏覽者點擊發送按鈕傳送表單的時候,隱藏域的資訊也被一起傳送到伺服器。
2、有些時候我們要給使用者資訊,讓他在提交表單時提交上來以確認身份,如:sessionkey,etc,當然這些東西也能用cookie實現,但使用隱藏域就簡單的多了,而且不會有瀏覽器不支援,使用者禁用cookie的煩惱。
3、有些時候一個form裡有多個提交按鈕,怎樣使程式能夠分清到底使用者是按哪一個按鈕提交上來的呢?我們就可以寫一個隱藏域,然後在每一個按鈕處加上onclick="document.form.command.value="xx""

,然後我們接到資料後先檢查command的值就會知道使用者是按哪個按鈕提交上來的。
4、有些時候一個網頁中有多個form,我們知道多個form是不能同時提交的,但有時候form確實互相作用,我們就可以在form中新增隱藏域來使它們聯絡起來。
5、JavaScript不支援全域性變數,但有時我們必須用全域性變數,我們就可以把值先存在隱藏域裡,它的值就不會丟失了。
6、還有個例子,比如按一個按鈕彈出四個小視窗,當點選其中的一個小視窗時其他三個自動關閉.可是IE不支援小視窗相互呼叫,所以只有在父視窗寫個隱藏域,當小視窗看到那個隱藏域的值是close時就自己關掉。

例子: 使用hidden實現點選提交按鈕數字加1

數值自增.htm

<form action="數值自增.ashx" method="post"> 
<input type="hidden" name="_viewstate" value="a" /> 
<input type="hidden" name="_div" value="@n" /> 
<!-- <input name="txt" type="text" value="@value" />--> 
<div>@n</div> 
<input type="submit" value="click"
/>
</form>

使用一般處理程式實現

數值自增.ashx

int n = 0; 
public void ProcessRequest (HttpContext context) { 
context.Response.ContentType = "text/html"; 

string path = context.Request.MapPath("數值自增.htm"); 
string html = System.IO.File.ReadAllText(path); 
//判斷頁面是否是第一次載入 
string viewstate = context.Request.Form["_viewstate"]; 
if (!string.IsNullOrEmpty(viewstate)) 
{ 
//點選按鈕 post 
//獲取隱藏域的值 
string s = context.Request.Form["_div"]; 
if (int.TryParse(s, out n)) 
{ 
n++; 
html = html.Replace("@n",n.ToString()); 
} 
} 
else 
{ 
//頁面首次載入,給div和div對應的隱藏域賦值 
html = html.Replace("@n", n.ToString()); 
} 
context.Response.Write(html); 
}