2008年7月9日 星期三

表單元件 Checkbox 群組用法


獨立的 Checkbox (不需value屬性)

<input type=“checkbox”
name=“apple”
checked>Apple

<input type=“checkbox”
name=“banana”
>Banana

<input type=“checkbox”
name= cherry”
>Cherry
伺服端擷取傳出值方法 : 須用一連串if判斷元件是否傳出被核取字串 “on”

<% if (
Request(“apple”)==“on”) {Response.Write(“Apple!”);} %>
Checkbox群組 (相同的name,須設value屬性) : 同名元件傳出多個值

<input type=“checkbox”
name=“fruit” value=“apple” checked>Apple

<input type=“checkbox”
name=“fruit”
value=“banana”>Banana

<input type=“checkbox”
name=“fruit”
value=“cherry”>Cherry
伺服端擷取傳出值方法 : 利用 Request 物件取出value屬性值陣列, 注意此陣列索引從1開始

<% =
Request(“fruit”) %> //傳出值為陣列值apple,banana,cherry (以逗號隔開)

<% for
(var i=1; i<=Request(“fruit”).Count; i++) {Response.Write(Request(“fruit”)(i)
);} %>
如果要存入資料庫, 必須先將傳出陣列串成字串(用一個特殊接合字元串起來), 再寫入欄位內

<% var fruit=new Array();

   for
(var i=1; i<=Request(“fruit”).Count; i++) {fruit.push(String(Request(“fruit”)(i)));}

   fruit=fruit.
join(“-”); //fruit
陣列變成字串,也可用 toString();但元素固定以逗號接合 %> 
由資料庫讀出時, 再用 split() 拆回陣列即可 <% var fruit=RS(“fruit”).Value.split(“-”)%>
注意,元素內不可含有接合字元,否則拆回陣列時會出錯 (元素變多)! 解決辦法 :

1.
元素接合前escape轉成Latin-1編碼,拆回後unescape轉回ASCII

   fruit.push(
escape(String(Request(“fruit”)(i)))); //先轉後串

   var fruit=
unescape(RS(“fruit”).Value.split(“-”)); //先拆後轉
2. 接合前把元素內容濾除接合字元

   fruit.push(escape(String(Request(“fruit”)(i)).replace(/[-]/g, “”))); //
先轉後串
客戶端元件存取 :
獨立checkbox直接用名稱或id個別存取, obj=formObj.apple;

Checkbox
群組與Radio群組存取法一樣.



沒有留言 :