在jsp页面中,处理后台数据在复选框中回显问题

//其中tagList是所有标签集合。tagids是根据某个id得到其有关联的标签id的字符串拼接<tr><th>标签:</th><td><c:forEachitems=... //其中tagList是所有标签集合。 tagids是根据某个id得到其有关联的标签id的字符串拼接
<tr>
<th>标签:</th>
<td>
<c:forEach items="${tagList}" var="one" varStatus="step">
<input name="s1" type="checkbox" value="${one.id}" ${fn:contains(tagids,one.id)?'checked':'' }/> ${one.tagName}
<c:if test="${step.count%5==0}">
<br/>
</c:if>
</c:forEach>
</td>
</tr>

选中t9,点击保存,然后进行查看时,标签1也选中。
展开
 我来答
0动感蚂蚁0
2017-06-30 · TA获得超过391个赞
知道小有建树答主
回答量:177
采纳率:100%
帮助的人:123万
展开全部

首先贴出代码片段,然后根据代码逐一说明

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!--引入 fn jstl支持-->    
<%@ taglib prefix="fn" uri="


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<ul>
<!-- 开发环境一般这里是用forEach循环-->
<li>
    <!-- if 语句用来判断当前复选框是否选中-->
    <!-- fn:contains 用来负责逻辑判断-->
<input type="checkbox" name="licence" id ="licence_1" value="1"  
<c:if test="${fn:contains(info.licence,'1')}">checked="checked"</if> />
<label for="licence_1">licence_1</label>
</li>
<li>
        <!-- 第二个复选项的逻辑和第一个是一样的 -->
<input type="checkbox" name="licence" id ="licence_2" value="2"  
<c:if test="${fn:contains(info.licence,'2')}">checked="checked"</if> />
<label for="licence_2">licence_2</label>
</li>
</ul>
</body>
</html>

假设复选框的name是licence,后台用info对象接收,那么回显的时候实际上就是判断info.licence是否包含当前复选项的值,这时候借助jstl fn组件中的函数contains来解决,contains用来判断参数1中是否包含字符串参数2,用法和java总的一样。这里要注意,为了能使用contains函数,需要在页头进行声明,参见代码片段第三行

关于contains的详细描述如下:

fn:contains(string, substring)

假如参数string中包含参数substring,返回true

例如:<c:if test="${fn:contains(name, searchString)}">


fn还有很多其他好用的函数

1、fn:containsIgnoreCase(string, substring)

假如参数string中包含参数substring(忽略大小写),返回true

2、 fn:endsWith(string, suffix)

假如参数 string 以参数suffix结尾,返回true

3、fn:escapeXml(string)

将有非凡意义的XML (和HTML)转换为对应的XML character entity code,并返回

4、fn:indexOf(string, substring)

返回参数substring在参数string中第一次出现的位置

5、fn:join(array, separator)

将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

6、fn:length(item)

返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。假如是String类型,返回值是String中的字符数。

7、fn:replace(string, before, after)

返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

8、fn:split(string, separator)

返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

9、fn:startsWith(string, prefix)

假如参数string以参数prefix开头,返回true

10、fn:substring(string, begin, end)

返回参数string部分字符串,从参数begin开始到参数end位置,包括end位置的字符

11、fn:substringAfter(string, substring)

返回参数substring在参数string中后面的那一部分字符串

12、fn:substringBefore(string, substring)

返回参数substring在参数string中前面的那一部分字符串

13、fn:toLowerCase(string)

将参数string所有的字符变为小写,并将其返回

14、fn:toUpperCase(string)

将参数string所有的字符变为大写,并将其返回

15、fn:trim(string)

去除参数string 首尾的空格,并将其返回

15114501641
2017-11-16 · 超过27用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:32.2万
展开全部

$(function(){

//当页面加载完成的时候,自动调用该方法

window.onload=function(){

//获得所要回显的值,此处为:100,1001,200,1400

var checkeds = $("#meidaHidden").val();

//拆分为字符串数组

var checkArray =checkeds.split(",");

//获得所有的复选框对象

var checkBoxAll = $("input[name='media']");

//获得所有复选框(新闻,微信,论坛,问答,博客,平媒)的value值,然后,用checkArray中的值和他们比较,如果有,则说明该复选框被选中

for(var i=0;i<checkArray.length;i++){

//获取所有复选框对象的value属性,然后,用checkArray[i]和他们匹配,如果有,则说明他应被选中

$.each(checkBoxAll,function(j,checkbox){

//获取复选框的value属性

var checkValue=$(checkbox).val();

if(checkArray[i]==checkValue){

$(checkbox).attr("checked",true);

}

})

}

//全选多选框的回显

var array=$("input[name='media']:checked").length;

//如果等于6,说明全部被选中,那么全选多选框也要被选中

//如果不等于6,说明全部都没选,那么全选的多选框也要被取消

if(array==6){

$("#checkAll").attr("checked",true);

}else{

$("#checkAll").attr("checked",false);

}

};

});


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刑初素5
2017-09-20 · TA获得超过311个赞
知道小有建树答主
回答量:165
采纳率:69%
帮助的人:137万
展开全部
                 //获得所要回显的值,后台返回的list或者string,如果是string,split(",")转换为数组
                 var checkArray =values;
                 //获得所有的复选框对象
                 var checkBoxAll = $("input[name='media']");
                 //获得所有复选框的value值,然后,用checkArray中的值和他们比较,如果有,则说明该复选框被选中
                 for(var i=0;i<checkArray.length;i++){
                     //获取所有复选框对象的value属性,然后,用checkArray[i]和他们匹配,如果有,则说明他应被选中
                     $.each(checkBoxAll,function(j,checkbox){
                         //获取复选框的value属性
                         var checkValue=$(checkbox).val();
                         if(checkArray[i]==checkValue){
                             $(checkbox).attr("checked",true);
                         }
                     })
                 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序NM的猿
2017-09-13 · TA获得超过103个赞
知道小有建树答主
回答量:202
采纳率:83%
帮助的人:83.5万
展开全部
$("input[name='word']").each(function(){ 
        for(数组循环){//复选框的值
        if($(this).val()==你的值) {//匹配到这个checkbox就设置check
                    $(this).checked=true;
            }
        }       
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
碧血玉叶花
2015-08-03 · TA获得超过4976个赞
知道大有可为答主
回答量:6154
采纳率:0%
帮助的人:1634万
展开全部
修改跟删除ca道理 用f些前页面编辑工b具3直接表格7修改doradock比2较复杂ve般做点击修改跳转另ey页面比4editjsp跳转候id传editjsp查id条数据页面ebform像新增数据op原先数据显示3都vq
oて哗w{gynh╚lcⅷ◇cⅷ◇qk鼎
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(13)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式