隱藏域在頁(yè)面中對(duì)于用戶是不可見(jiàn)的,在表單中插入隱藏域的目的在于收集或發(fā)送信息,以利于被處理表單的程序所使用,下面為大家詳細(xì)介紹下此隱藏域在實(shí)際中時(shí)如何使用的,感興趣的朋友不要錯(cuò)過(guò)了
基本語(yǔ)法:
<input type="hidden" name="field_name" value="value">
作用:
1 隱藏域在頁(yè)面中對(duì)于用戶是不可見(jiàn)的,在表單中插入隱藏域的目的在于收集或發(fā)送信息,以利于被處理表單的程序所使用。瀏覽者單擊發(fā)送按鈕發(fā)送表單的時(shí)候,隱藏域的信息也被一起發(fā)送到服務(wù)器。
2 有些時(shí)候我們要給用戶一信息,讓他在提交表單時(shí)提交上來(lái)以確定用戶身份,如sessionkey,等等.當(dāng)然這些東西也能用cookie實(shí)現(xiàn),但使用隱藏域就簡(jiǎn)單的多了.而且不會(huì)有瀏覽器不支持,用戶禁用cookie的煩惱。
3 有些時(shí)候一個(gè)form里有多個(gè)提交按鈕,怎樣使程序能夠分清楚到底用戶是按那一個(gè)按鈕提交上來(lái)的呢?我們就可以寫(xiě)一個(gè)隱藏域,然后在每一個(gè)按鈕處加上onclick="document.form.command.value="xx""然后我們接到數(shù)據(jù)后先檢查command的值就會(huì)知道用戶是按的那個(gè)按鈕提交上來(lái)的。
4 有時(shí)候一個(gè)網(wǎng)頁(yè)中有多個(gè)form,我們知道多個(gè)form是不能同時(shí)提交的,但有時(shí)這些form確實(shí)相互作用,我們就可以在form中添加隱藏域來(lái)使它們聯(lián)系起來(lái)。
5 javascript不支持全局變量,但有時(shí)我們必須用全局變量,我們就可以把值先存在隱藏域里,它的值就不會(huì)丟失了。
6 還有個(gè)例子,比如按一個(gè)按鈕彈出四個(gè)小窗口,當(dāng)點(diǎn)擊其中的一個(gè)小窗口時(shí)其他三個(gè)自動(dòng)關(guān)閉.可是IE不支持小窗口相互調(diào)用,所以只有在父窗口寫(xiě)個(gè)隱藏域,當(dāng)小窗口看到那個(gè)隱藏域的值是close時(shí)就自己關(guān)掉。
例子: 使用hidden實(shí)現(xiàn)點(diǎn)擊提交按鈕數(shù)字加1
數(shù)值自增.htm
代碼如下:
<form action="數(shù)值自增.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>
使用一般處理程序?qū)崿F(xiàn)
數(shù)值自增.ashx
代碼如下:
int n = 0;
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";
string path = context.Request.MapPath("數(shù)值自增.htm");
string html = System.IO.File.ReadAllText(path);
//判斷頁(yè)面是否是第一次加載
string viewstate = context.Request.Form["_viewstate"];
if (!string.IsNullOrEmpty(viewstate))
{
//點(diǎn)擊按鈕 post
//獲取隱藏域的值
string s = context.Request.Form["_div"];
if (int.TryParse(s, out n))
{
n++;
html = html.Replace("@n",n.ToString());
}
}
else
{
//頁(yè)面首次加載,給div和div對(duì)應(yīng)的隱藏域賦值
html = html.Replace("@n", n.ToString());
}
context.Response.Write(html);
}