页面动态的产生若干个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处理
分享到:
相关推荐
例如,如果后台返回一个列表对象,`<s:iterator>`会遍历这个列表并为每个元素生成一个对应的HTML行,其中可能包括与每个数据项相关的复选框。 在实现这个功能时,通常会有一个后端接口(如Java的Servlet或Spring ...
C#的winform是没有webform的RadioButtonList和CheckBoxList这两个...要实现从数据库取出数据后动态生成N个RadioButton和CheckBox并获取选中项目的值,请看本例。思路很简单,有问题请指出,相互学习共同进步,谢谢。
1、这个主要是针对于考试类程序用的,比如其中如何向ListView中动态添加多个RadioButton单选题选项以及多个CheckBox多选题选项,另外,多个填空题的话,也可以用类似的方法整。 2、解决ListView中添加Button、...
本实例将详细讲解如何实现CheckBox控件的三种状态:未选中、已选中以及灰色禁用状态,并探讨它们在实际应用中的配置和事件处理。 1. CheckBox的基本结构: CheckBox控件在界面中通常表现为一个小方框,里面可能有...
在描述中提到的“用循环动态生成checkbox组”,就是通过ActionScript中的循环结构,如for或while循环,来创建并添加多个Checkbox实例到舞台。 首先,我们需要理解Checkbox类。Checkbox是Flex提供的一个控件,用于让...
一旦我们获取到了这个元素,就可以通过改变它的`checked`属性来改变它的状态。如果`checked`属性设置为`true`,复选框将被选中;如果设置为`false`或者删除该属性,复选框将变为未选中状态。以下是一些示例: ```...
QT是Qt库的缩写,它是一个用于...学习并熟练掌握`QT CheckBox`的状态管理和信号绑定,能够帮助你创建更动态、更用户友好的GUI应用程序。通过实际操作和练习,你将能够更好地理解这些概念,并将它们应用到你的项目中。
对于这个初级例子,开发者可能将所有CheckBox的信息(包括文本和状态)保存到一个简单的文本文件,然后在程序启动时解析这个文件,为每个CheckBox创建对应的数据结构,然后根据文件中的信息设置每个CheckBox的状态。...
例如,CheckBox的状态可能与后台数据库中的记录状态相对应,因此需要在状态改变时更新数据模型,并可能触发相关的业务逻辑。 总之,DuiLib_CheckBox是一种增强DuiLib库中CheckBox控件功能的方法,使得其可以处理更...
总结来说,解决ListView嵌套CheckBox滑动时的选中状态错乱问题,需要深入理解ListView的工作机制,合理利用ViewHolder,正确绑定数据,监听并处理CheckBox的状态变化,以及适当地处理点击事件。通过这些步骤,可以...
flex动态生成checkbox,方便多项选择维护更新
当双击这个node的checkbox时,会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-> checked-> unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox...
在网页开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互等任务。本文将深入探讨如何使用jQuery来实现复选框(checkbox)的选中和取消选中功能,以及如何处理多选的情况。 ...
在ASP.NET Web应用程序开发中,尤其是在使用C#作为后端语言时,动态地判断一个或多个`Checkbox`控件的状态是非常常见的需求。这种需求通常出现在表单验证、用户选项设置等功能模块中。下面我们将详细探讨如何通过...
在某些场景下,我们可能需要根据后台返回的数据动态地禁用某些行的checkbox。这可以通过监听`checkbox`事件来实现。在事件处理函数中,我们可以通过`this.checked`判断当前是否选中,`this.data`获取到当前行的全部...
在.NET框架中,CheckboxList控件常用于呈现一组可选的复选框,通常用于用户可以选择多个选项的场景。然而,有时候我们可能需要限制用户只能选择一个选项,这就需要将CheckboxList转换为单选功能。下面我们将详细探讨...
当用户更改复选框状态时,我们可以监听这个事件,并将当前选中的项的ID或值存储到本地。当页面重新加载时,我们可以读取这些存储的数据,并根据这些数据恢复复选框的状态。 例如,假设我们有一个日期选择的功能,...
综上所述,"两层嵌套的checkbox记录选中状态"涉及到的是Android UI组件的深度定制和交互逻辑的设计,需要开发者对Android的Adapter机制、事件处理、数据结构以及性能优化有深入理解。在实际开发中,这样的需求可能会...
在本文中,我们将探讨如何在C#中动态生成和获取CheckBox控件的值,主要关注两种不同的实现方式。 **方法一:服务器容器控件中添加子控件** 在ASP.NET中,我们可以利用服务器端控件来动态创建CheckBox。这种方式的...
2. 保存并恢复Checkbox状态:在getView()方法中,根据当前position的值设置Checkbox的checked状态。这个值通常从数据模型或者数据库中获取。 三、内存优化 1. 避免内存泄漏:当convertView被复用时,要确保不再持有...