如何按照jsp页面上选中的顺序获取复选框的值?

时间:2012-12-18 16:45:48

标签: java javascript jsp struts2

我在jsp页面中有四个复选框。我想按照选择的顺序获取它们的值。假设复选框具有值A,B,C,D。如果我选​​择第一个B,然后是D,则选择A,最后选择C.我应该得到B,D,A,C。我需要将这些值发送给java。

6 个答案:

答案 0 :(得分:1)

HTML没有允许您订购值的控件。您必须使用JavaScript来跟踪点击内容的顺序(或者根据选择提交表单)。

最简单的方法是使用隐藏的输入hidden.value += this.value复选框上的点击事件。

如果取消选中复选框并执行该操作,您需要决定业务逻辑。

答案 1 :(得分:1)

尝试使用

$('#isAgeSelected').attr('checked')

这将返回true或false

答案 2 :(得分:1)

可能不是最好的方法,但可以通过使用单选按钮的onClick属性不断更新隐藏的输入字段来实现迂回方法。
未经测试的代码:

<script>
 function updateFoo(elemId){
   var elem = document.getElementById("foo");
   elem.value = elem.value+", "+elemId;
   console.log(elem.value);        
}

funcition cleanFoo(){
   //Now clean the string to remove the ',' at the beggining and the end and to 
   //contain A,B,C,D only once
   /*
    Scan the string from the back and keep the last occurence of each ID
    since the user can select or click on radio buttons more than once
    Eg. a,b,c,d,b,b,c,a,d,d,a
    Keep:         b,c,    d,a  //final selections
    //I may write a code here when I get some time
    */
}

</script>
<body>
<input type="radio" id="A" onClick="updateFoo('A')">A<br/>
<input type="radio" id="B" onClick="updateFoo('B')">B<br/>
<input type="radio" id="C" onClick="updateFoo('C')">C<br/>
<input type="radio" id="D" onClick="updateFoo('D')">D<br/>
<input type="hidden" id="foo" value="">
</body>

答案 3 :(得分:0)

1)添加一个新的隐藏输入字段。 2)根据用户选择填充值 3)在服务器上读取隐藏的变量。

例如:最初hidden_​​variable =“”

当用户选择B时,hidden_​​variable =“B” 当用户选择C时,hidden_​​variable =“B,C”就像这样。

如果用户取消选择某个值,请从hidden_​​variable中删除该值。

所有这一切都可以用一些基本的js功能

答案 4 :(得分:0)

只需使用<input type="hidden" id="myList"/>将值发送给Java。

选中/取消选中复选框后,您调用一个javascript函数,该函数将复选框的值附加(或删除,使用substringindexOf)隐藏字段。

编辑:这是一个副本:Detect order in which checkboxes are clicked

答案 5 :(得分:0)

非常感谢大家。最后,我根据大家的建议得到了结果。 我用了 : JavaScript代码

    <script type="text/javascript">

    arr = new Array();

    function updatePriority(elemId){

      var elem = document.getElementById("foo");
      var chkBox = document.getElementById(elemId);
      var options = document.getElementsByName('checkbox1');

       if(document.getElementById(elemId).checked) {    
   alert("checked");         
 arr.push(elemId);  
     }
       else { 
          for(var i = arr.length; i>=0; i--){
      if(arr[i]==elemId){
        arr.splice(i,1);
         break;
               }
      }
            }

      for(var i = (arr.length-1); i>=0; i--){
       alert("checked value list ::"+arr[i]);

      }


   }

我以相反的顺序获得输出。这不是问题,因为我可以从Java端轻松处理这个问题。