问题描述
<s:iterator value="listkdd" status="status"><s:checkbox name="listkdd[%{#status.index}].delete_check" value="%{listkdd[#status.index].delete_check}"></s:checkbox><s:textarea name="listkdd[%{#status.index}].policy_msg" value="%{listkdd[#status.index].policy_msg}" ></s:textarea><s:hidden name="listkdd[%{#status.index}].hyoji_cd" value="%{listkdd[#status.index].hyoji_cd}" ></s:hidden></s:iterator> 上面是jsp里的代码 用struts2 的 s:iterator 将封装了bean对象的 listkdd 迭代到到页面上来了。在页面边机构,需要多行数据的的表单验证。请问这个该怎么捕捉到每一行啊 我看jsp页面返回的都是<input type="checkbox" name="listkdd[0].delete_check" value="true" id="TestCumit_listkdd_0__delete_check"/><input type="checkbox" name="listkdd[1].delete_check" value="true" id="TestCumit_listkdd_1__delete_check"/><input type="checkbox" name="listkdd[2].delete_check" value="true" id="TestCumit_listkdd_2__delete_check"/>这样的表单,该怎么逐句校验呢 问题补充:liveHappy 写道
解决方案
好,可能还有别的checkbox,但不是在循环中的。那么只多循环中的去做判断。可能你不知道循环中的list是多少条,也许就一个也许很多,那循环中得有个条件去限制循环的次数。以页面中的input标签的个数为次数,不要想这样是不是会去做很多处理,这个不用想,它返回的就是一个总数。checkbox的id就以你写的第一个数字的。for(var i =0 ; i< document.getElementsByTagName("input").length;i++){ //先判断是否为object对象,要不会报找不到属性. if(document.getElementById("check_delete"+i) != null){ //判断是否被选择if(document.getElementById("check_delete"+i).checked == true){ //自己写上要处理的事情了,或者赋值或者弹出alert(); } }}
解决方案二:
给你个提示吧。如果你需要对checkbox是否没选中做验证的话,可以这么做。你在页面上会有很多个checkbox吧,那么需要去判断checkbox被选还是没被选,用javascript去获得页面所有标签,如果标签类型等于checkbox的话,获得checkbox对象,在判断此checkbox的属性disabled是为true还是为false,如果为false就是没有被选中。在有个方法,给checkbox一个有规律的id。<s:checkbox id="#status.index" name="listkdd[%{#status.index}].delete_check" value="%{listkdd[#status.index].delete_check}"></s:checkbox>然后javascript做一个for去找对应id的对象,在判断disabled属性为true或false。那么下面的textarea也可以用这种方法去做。很直观。