ASP获取和还原复选框的值(0~99多项选择)

    在多项选择的一些应用中,可以用二进制1代表选中,0代表不选。例如给某用户角色分配权限abcdefg,选中情况是1001101,那么此角色包含四项权限,用一个变量表示,相应的十进制数是77。
    但是,在ASP中的多项选择,就不适合这种以数值的形式记录选中情况。因为,当项目数很多时(例如64项,相应的二进制数达64位),就涉及大整数的运算,步骤繁杂,而且当项目数改变时,算法也要改变。

    以下以字符的形式获取和还原ASP复选框的值,应用于角色分配、投票统计等领域,最多99项:


<script language="javascript">
function selectIt(){
 form=document.lzyy
 action=event.srcElement.name
 for(var i=0; i<form.elements.length; i++){
     if(form.elements[i].name=="test"){
       e=form.elements[i]
      e.checked=(action=="selectAll")?(form.selectAll.checked):(!e.checked)
     }
 }
 }
</script>
<%
dim check,ch,test
check=99  '总项目数0~99
dim checked
redim  checked(check) '各项的选中状态

if not request.form("action")="editselect" then %> 
<form name="lzyy" action="" method="post">  
<input type="checkbox" name="selectAll" value="checkbox" onClick="selectIt()"><b>全选</b>
<input type="checkbox" name="invest" value="checkbox" onClick="selectIt()"><b>反选</b>
<%
for chi=1 to check
 ch="0"+cstr(chi)
 ch=right(ch,2)
%>
<input type="checkbox" name="test" value="<%=ch%>">项目<%=ch%>&nbsp;
<%next%>
<input name="action" type="hidden" value="editselect" />  
<input type="submit" name="Submit" value="选择" />  
</form> 

<%else%>
<BR>(还原选中情况:)<BR>
<%
test=request.form("test")
Response.Write "<br>选中之后,保存在数据库中的文本(例如01, 02, 03, 05 ):" & test & "<br>"
'循环取值/操作
'strCheck=Split(test,",")
'For I=0 To UBound(strCheck)
'Response.Write  strCheck(I)
'Next
for chi=1 to check
 ch="0"+cstr(chi)
 ch=right(ch,2)
 if Instr(test,ch) then
  checked(chi)="checked"  '已选中
 else
  checked(chi)=""
 end if
next
%>
<form name="lzyyjs" action="" method="post">
<input type="checkbox" name="selectAll" value="checkbox" onClick="selectIt()"><b>全选</b>
<input type="checkbox" name="invest" value="checkbox" onClick="selectIt()"><b>反选</b>
<%for chi=1 to check
 ch="0"+cstr(chi)
 ch=right(ch,2)
 %>
<input type="checkbox" name="test" value="<%=ch%>" <%=checked(chi)%>>项目<%=ch%>&nbsp;
<%next%>
<input name="action" type="hidden" value="editselect" />  
<input type="submit" name="Submit" value="选择" />  
</form> 

<%end if%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值