Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用struts2中的s:checkboxlist选择多个复选框,显示结果_Struts2_Checkboxlist - Fatal编程技术网

使用struts2中的s:checkboxlist选择多个复选框,显示结果

使用struts2中的s:checkboxlist选择多个复选框,显示结果,struts2,checkboxlist,Struts2,Checkboxlist,我有一个复选框列表,如下所示: <s:checkboxlist list="books" name="checked" theme="simple" cssStyle="vertical" listKey="code" listValue="description" > </s:checkboxlist> <s:submit value="submit" name="submit"/> 我有一些复选框,

我有一个复选框列表,如下所示:

<s:checkboxlist list="books" name="checked" theme="simple" cssStyle="vertical"                      
listKey="code" listValue="description" >    </s:checkboxlist> 
<s:submit value="submit" name="submit"/>

我有一些复选框,如学术、小说、烹饪食谱等。也就是说,有多个复选框,我可以从中选择多个选项。比如说,我选择了小说和学术,那么小说和学术下的所有书籍都应该显示出来。如果我只选择小说,则只需显示小说类别下的书籍。我想有一个提交按钮,当点击它列出所有的书籍根据选定的类别

当我尝试在checkboxlist中使用onchange功能时(您可以在下面看到的第二个代码),它不适用于多个选项,即,只要我选中一个复选框(例如小说),页面就会自动刷新,然后我才能选中其他复选框并仅显示该特定类别(例如小说)下的书籍. 因此,以下内容不允许我选中多个复选框。我还有别的方法可以做到这一点吗

<s:checkboxlist list="books" name="checked" theme="simple" cssStyle="vertical"                      
listKey="code" listValue="description" onchange="searchBook(this)" >    </s:checkboxlist> 


function searchBook(book){
var bookValue   = book.value;
document.getElementById("book").value = bookValue;     
document.forms[0].submit();
}

功能搜索簿(book){
var bookValue=账面价值;
document.getElementById(“book”).value=bookValue;
document.forms[0]。提交();
}

谢谢大家!

嗨@Pravin,我已经按照你的要求进行了编辑和阐述。我希望现在已经很清楚了。书籍的选择应该基于
学术、小说、烹饪食谱
,那么为什么要将
onchange
放在
书籍复选框
上,以及
学术、小说、烹饪食谱
复选框上是否有onchange事件,如果你为这些复选框调用相同的函数,那就是
搜索书(书籍)
那么在提交页面
文档时可能会出现问题。表单[0]。提交()你好@Pravin,谢谢。我试过上面的代码。结果的显示方式与AND条件类似。i、 例如,假设我检查小说和学术,输出为“无”,因为它可能正在查找包含这两个类别的单个书籍。相反,我希望结果包含小说类的所有书籍以及学术类的所有书籍,就像“或”条件一样。我现在得到了结果。。在后端做了一些更改,现在就得到了结果!非常感谢你的帮助!嗨,普拉文,我还有一个问题。是否有任何方法可以在页面刷新后保留选中复选框的值(即,当页面刷新以在document.forms[0].submit()之后提供输出时)?您能否解释一下@Pravin如何执行此操作,因为我不太清楚这一点?请提供一个例子
 <s:checkboxlist list="books" name="checked" theme="simple" cssStyle="vertical"  
listKey="code" listValue="description" onchange="searchBook(this)" >    </s:checkboxlist>
var lastVal = ""; // globale variable
    function searchFunction(){
        var checkboxes = document.getElementsByName('checked');
        var vals = "";
        for (var i=0, n=checkboxes.length;i<n;i++) {
          if (checkboxes[i].checked) 
          {
          vals += ","+checkboxes[i].value;
          }
        }
        if (vals) vals = vals.substring(1);
        if(vals != "" && lastVal != vals){
            lastVal = vals;
            document.getElementById("book").value = vals;     
            document.forms[0].submit();
        }

    }