【问题标题】:Display the result based on selecting multiple checkboxes using s:checkboxlist in struts2在struts2中使用s:checkboxlist显示基于选择多个复选框的结果
【发布时间】:2014-12-03 21:52:40
【问题描述】:

我有一个如下的复选框列表:

<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();
}

谢谢!

【问题讨论】:

  • 嗨@Pravin,我已按照您的要求进行了编辑和详细说明。我希望现在很清楚。
  • 应该根据academics, fiction, cooking recipes 选择书,然后为什么你把onchange 放在books checkbox 上并且academics, fiction, cooking recipes 上是否有onchange 事件,如果你为这些checkboes 调用相同的函数,那就是@ 987654327@ 那么您在提交页面时可能会遇到问题document.forms[0].submit();

标签: struts2 checkboxlist


【解决方案1】:
 <s:checkboxlist list="books" name="checked" theme="simple" cssStyle="vertical"  
listKey="code" listValue="description" onchange="searchBook(this)" >    </s:checkboxlist>

您可以使用onchangeonclick

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();
        }

    }

【讨论】:

  • 嗨@Pravin,谢谢。我试过上面的代码。结果显示为 AND 条件。即,假设我检查小说和学术,输出为“无”,因为它可能正在寻找包含这两个类别的个人书籍。相反,我希望结果包含小说类别下的所有书籍以及学术类别下的所有书籍,这就像一个“或”条件。
  • 我现在得到了结果.. 在后端做了一些更改,现在得到了结果!非常感谢您的帮助!
  • 嗨@Pravin,我还有一个问题。即使在页面刷新后(即,当页面刷新以在 document.forms[0].submit() 之后提供输出时),有什么方法可以保留选中复选框的值?
  • 你能解释一下我该怎么做@Pravin,因为我不太清楚这一点吗?请举个例子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多