页面动态的产生若干个checkbox(比如100)
每个checkbox可以单独勾选
有一个按钮按下之后需要提交选中的checkbox对应的数据bean的id到后台
<script type="text/JavaScript">
<!--
function add(id,obj){
var isChecked=false;
if(obj.checked)
{
var isChecked=true;
}
alert(isChecked);
if(isChecked==true)
{
var old=getCookie("listSightIds");
alert("old:"+old);
if(null!=old&&""!=old)
{
old=old+","+id;
}
else
{
old=id;
}
setCookie("listSightIds",old,1);
alert(" old after:"+old+", and setCookie :"+getCookie("listSightIds"));
}
else
{
removeCookie(listSightIds);
}
}
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
function removeCookie(c_name)
{
setCookie(c_name,"",-1);
}
//-->
</script>
<s:iterator value="sightsForSs" status="status" id="index">
<s:if test="#status.index % 4 == 0">
<tr>
</s:if>
<td>
<input type="checkbox" onclick="javascript:add('<s:property value='#index.id' />',this);" id="<s:property value='#index.id' />"><a target="_blank" href = "<%=ctx %>/cityDo!getSightById?sightId=<s:property value='#index.id' />"><s:property value="#index.sightName" /></a>
</td>
<s:if test = "#status.index % 4 == 3 || #status.last">
</tr>
</s:if>
</s:iterator>
好像不可以 添加时可以的 删除确实问题
一是增加一个cookie值 记录被删除的id 不去除重复 后台用linkedlist和hashmap 处理 成一个不重复的 id序列 来记录
二 是换一个处理方法
待续
发现这个方法很繁琐 所以考虑换个方法了
考虑用struts2的标签库 s:checkboxlist
代码如下
<s:checkboxlist name="sights" list="listSight" listKey="id" listValue="sightName" />
提交之后 在action定义 private String sights
得到的提交过来的格式是 listKey对应的值 以逗号隔开 比如 1235,2354,1225
这样的东西是合要求的 但是又有两个新问题
1 显示乱且不间隔 理想状态时需要每行四个
2 无法在每个checkbox后面的文字加上a链接
对于问题1 解决方法是修改 struts core包底下有个template.simple包下的 checkboxlist.ftl 在src建一个template.simple包 拷贝文件 修改为
<#assign itemCount = 0/>
<#if parameters.list??>
<@s.iterator value="parameters.list">
<#assign itemCount = itemCount + 1/>
<#if parameters.listKey??>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<#else>
<#assign itemKey = stack.findValue('top')/>
</#if>
<#if parameters.listValue??>
<#assign itemValue = stack.findString(parameters.listValue)?default("")/>
<#else>
<#assign itemValue = stack.findString('top')/>
</#if>
<#assign itemKeyStr=itemKey.toString() />
[b] <#if (itemCount-1)%4 == 0>
<tr>
</#if>[/b]
<td>
<input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}" id="${parameters.name?html}-${itemCount}"<#rt/>
<#if tag.contains(parameters.nameValue, itemKey)>
checked="checked"<#rt/>
</#if>
<#if parameters.disabled?default(false)>
disabled="disabled"<#rt/>
</#if>
<#if parameters.title??>
title="${parameters.title?html}"<#rt/>
</#if>
<#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
<#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
/>
<label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}</label>
</td>
<#if itemCount%4 == 0>
</tr>
</#if> ]
</@s.iterator>
<#else>
</#if>
<input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.name?html}" value=""<#rt/>
<#if parameters.disabled?default(false)>
disabled="disabled"<#rt/>
</#if>
/>
但是对于第二个问题 可能也是修改这个模板文件 但是还有问题 如果我把sightname需要连接的动态生成的a标签 写死在ftl文件中 那么其他可以用到这个checkboxlist的情况也无法共存
只有放弃这个方案 最后决定将提交页面放在js中做
利用s:iterator动态产生有a标签的checkbox 在js中过滤所有选中checked状态的checkbox 取出id值 组装成一个string传参到后台
我采用jquery
<s:iterator value="sightsForSs" status="status" id="index">
<s:if test="#status.index % 4 == 0">
<tr>
</s:if>
<td>
<input type="checkbox" id="<s:property value='#index.id' />"><a target="_blank" href = "<%=ctx %>/cityDo!getSightById?sightId=<s:property value='#index.id' />"><s:property value="#index.sightName" /></a>
</td>
<s:if test = "#status.index % 4 == 3 || #status.last">
</tr>
</s:if>
</s:iterator>
jquery部分
var str="";
$(document).ready(function()
{
$("#nextButton").click(function(){
alert("nextButton");
str="";
getString();
alert("all String is:"+str);
});
});
function getString()
{
$("input::checked").each(function(i){
var st=$(this).attr("id");
if(""==str)
{
str=st;
}
else{
str=str+","+st;
}
});
}
最后的str就是需要的id串 至此问题解决 每行四个checkbox check框对齐 sightname值带一个a标签查看详细 提交js处理成id串提交后台action处理
分享到:
相关推荐
C#的winform是没有webform的RadioButtonList和CheckBoxList这两个...要实现从数据库取出数据后动态生成N个RadioButton和CheckBox并获取选中项目的值,请看本例。思路很简单,有问题请指出,相互学习共同进步,谢谢。
1、这个主要是针对于考试类程序用的,比如其中如何向ListView中动态添加多个RadioButton单选题选项以及多个CheckBox多选题选项,另外,多个填空题的话,也可以用类似的方法整。 2、解决ListView中添加Button、...
工程从数据库中获取相关信息,通过列表显示所有数据,实现了checkbox的全选,并将选中部分的数据传入后台,进行操作。
flex动态生成checkbox,方便多项选择维护更新
这里不是用放射生成checkbox组,用循环动态生成checkbox组,只要自己改一下数据源,则可应用!
PB 11.5 CheckBox三种状态的实例。
当双击这个node的checkbox时,会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-> checked-> unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox...
MFC实现动态创建COMBOX控件以及CHECKBOX控件的例子,还有在类里头创建线程的应用
项目中的分页使用真分页,每次...把选中的checkbox中的id,其中包括模块id,操作id,拼接成一个字符串,然后把字符串传递到action中。 每次调用此页面时,首选调用action中的选中的id字符串,然后根据在id字符串的基
最近遇到一个问题,在一个页面需要动态渲染页面内的表单,其中包括 checkbox 表单类型,并且使用 Element 组件 UI 时,此时 v-model 绑定的数据也是动态生成的 例如: 定义的 data 的 form 里面是空对象,需要动态...
火狐中 获取checkbox的checked属性的方法
Delphi动态创建和载入CheckBox控件, 还可保存CheckBox ,比较简单的Delphi初级例子,希望对Delphi新手朋友们有所帮助。
在ie6、ie7下,对于checkbox的勾选状态checked属性的值获取始终是null,利用jquery在获取的html中增加checked属性
解决ListView嵌套CheckBox滑动时CheckBox选中状态错乱问题,以及listview中事件点击冲突问题;一个简单的小Demo;
jquery checkbox 选中 取消 checkbox多选
checkbox是VS2012的常用控件之一,可以方便的为某些功能取消或启用,下面教你如何简单使用checkbox。本文通过两种方法给大家介绍,需要的朋友一起看看吧
如果用一个checkbox被选中,alert这个checkbox的属性”checked”的值alert($(#xxx).attr(“checked”)),会打印出”true”,而不是”checked”! 如果没被选中,打印出的是”undefined”。 注意红色的部分...
checkbox状态的保持以及相差七天时间的日期
protected void btnDel_Click(object sender, System.EventArgs e) { ArrayList list = new ArrayList(); CheckBox chk; foreach(DataGridItem it in DataGrid... if(chk.Checked) list.Add(it.Cells[1].Text); }
博文链接:https://qsfwy.iteye.com/blog/234331