`
nickdine
  • 浏览: 45691 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

处理动态生成若干不定个数checkbox并返回checked状态的id到后台

阅读更多
页面动态的产生若干个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>
  &nbsp;
</#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处理


分享到:
评论

相关推荐

    checkbox全选,选中数据传到后台

    例如,如果后台返回一个列表对象,`&lt;s:iterator&gt;`会遍历这个列表并为每个元素生成一个对应的HTML行,其中可能包括与每个数据项相关的复选框。 在实现这个功能时,通常会有一个后端接口(如Java的Servlet或Spring ...

    C#_winform_动态生成RadioButton和CheckBox并获取选中值

    C#的winform是没有webform的RadioButtonList和CheckBoxList这两个...要实现从数据库取出数据后动态生成N个RadioButton和CheckBox并获取选中项目的值,请看本例。思路很简单,有问题请指出,相互学习共同进步,谢谢。

    Android开发中动态向ListView中添加RadioButton和CheckBox以及动态改变其Checked状态改变

    1、这个主要是针对于考试类程序用的,比如其中如何向ListView中动态添加多个RadioButton单选题选项以及多个CheckBox多选题选项,另外,多个填空题的话,也可以用类似的方法整。 2、解决ListView中添加Button、...

    PB 11.5 CheckBox三种状态的实例

    本实例将详细讲解如何实现CheckBox控件的三种状态:未选中、已选中以及灰色禁用状态,并探讨它们在实际应用中的配置和事件处理。 1. CheckBox的基本结构: CheckBox控件在界面中通常表现为一个小方框,里面可能有...

    Flex动态生成checkbox组

    在描述中提到的“用循环动态生成checkbox组”,就是通过ActionScript中的循环结构,如for或while循环,来创建并添加多个Checkbox实例到舞台。 首先,我们需要理解Checkbox类。Checkbox是Flex提供的一个控件,用于让...

    用JS修改checkbox的选中状态

    一旦我们获取到了这个元素,就可以通过改变它的`checked`属性来改变它的状态。如果`checked`属性设置为`true`,复选框将被选中;如果设置为`false`或者删除该属性,复选框将变为未选中状态。以下是一些示例: ```...

    QT CheckBox复选框状态设置、信号绑定, setCheckState、checkState、setTristate

    QT是Qt库的缩写,它是一个用于...学习并熟练掌握`QT CheckBox`的状态管理和信号绑定,能够帮助你创建更动态、更用户友好的GUI应用程序。通过实际操作和练习,你将能够更好地理解这些概念,并将它们应用到你的项目中。

    Delphi动态创建和载入CheckBox控件.rar

    对于这个初级例子,开发者可能将所有CheckBox的信息(包括文本和状态)保存到一个简单的文本文件,然后在程序启动时解析这个文件,为每个CheckBox创建对应的数据结构,然后根据文件中的信息设置每个CheckBox的状态。...

    DuiLib_CheckBox

    例如,CheckBox的状态可能与后台数据库中的记录状态相对应,因此需要在状态改变时更新数据模型,并可能触发相关的业务逻辑。 总之,DuiLib_CheckBox是一种增强DuiLib库中CheckBox控件功能的方法,使得其可以处理更...

    解决ListView嵌套CheckBox滑动时选中状态错乱

    总结来说,解决ListView嵌套CheckBox滑动时的选中状态错乱问题,需要深入理解ListView的工作机制,合理利用ViewHolder,正确绑定数据,监听并处理CheckBox的状态变化,以及适当地处理点击事件。通过这些步骤,可以...

    flex动态生成checkbox

    flex动态生成checkbox,方便多项选择维护更新

    C# 解决双击TreeView表里checkbox本身Bug问题

    当双击这个node的checkbox时,会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-&gt; checked-&gt; unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox...

    jquery checkbox 选中 取消 checkbox多选

    在网页开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互等任务。本文将深入探讨如何使用jQuery来实现复选框(checkbox)的选中和取消选中功能,以及如何处理多选的情况。 ...

    循环动态判断checkbox是否被选中

    在ASP.NET Web应用程序开发中,尤其是在使用C#作为后端语言时,动态地判断一个或多个`Checkbox`控件的状态是非常常见的需求。这种需求通常出现在表单验证、用户选项设置等功能模块中。下面我们将详细探讨如何通过...

    layui动态禁用checkbox.rar

    在某些场景下,我们可能需要根据后台返回的数据动态地禁用某些行的checkbox。这可以通过监听`checkbox`事件来实现。在事件处理函数中,我们可以通过`this.checked`判断当前是否选中,`this.data`获取到当前行的全部...

    .net 后台实现 checkboxlist 单选

    在.NET框架中,CheckboxList控件常用于呈现一组可选的复选框,通常用于用户可以选择多个选项的场景。然而,有时候我们可能需要限制用户只能选择一个选项,这就需要将CheckboxList转换为单选功能。下面我们将详细探讨...

    checkbox复选框状态保持

    当用户更改复选框状态时,我们可以监听这个事件,并将当前选中的项的ID或值存储到本地。当页面重新加载时,我们可以读取这些存储的数据,并根据这些数据恢复复选框的状态。 例如,假设我们有一个日期选择的功能,...

    两层嵌套的checkbox记录选中状态

    综上所述,"两层嵌套的checkbox记录选中状态"涉及到的是Android UI组件的深度定制和交互逻辑的设计,需要开发者对Android的Adapter机制、事件处理、数据结构以及性能优化有深入理解。在实际开发中,这样的需求可能会...

    C#获取动态生成的CheckBox值

    在本文中,我们将探讨如何在C#中动态生成和获取CheckBox控件的值,主要关注两种不同的实现方式。 **方法一:服务器容器控件中添加子控件** 在ASP.NET中,我们可以利用服务器端控件来动态创建CheckBox。这种方式的...

    listview的checkbox状态保存及内存优化

    2. 保存并恢复Checkbox状态:在getView()方法中,根据当前position的值设置Checkbox的checked状态。这个值通常从数据模型或者数据库中获取。 三、内存优化 1. 避免内存泄漏:当convertView被复用时,要确保不再持有...

Global site tag (gtag.js) - Google Analytics