Java 如何按照在jsp页面上选择复选框的顺序获取复选框的值?
我在jsp页面中有四个复选框。我希望按照选择的顺序获取它们的值。假设复选框中有值A、B、C、D。如果我先选择B,然后选择D,然后选择A,最后选择C。我应该得到B、D、A、C。这些值需要发送到java 1)添加新的隐藏输入字段。 2) 根据用户选择填充值 3) 读取服务器上的隐藏变量 例如:最初隐藏的_变量=“” 当用户选择B时,隐藏变量=“B” 当用户选择C时,隐藏的_variable=“B,C”如下所示 如果用户取消选择某个值,请从隐藏的变量中删除该值 所有这些都可以通过一些基本的js功能来完成,添加一个新的隐藏输入字段。 2) 根据用户选择填充值 3) 读取服务器上的隐藏变量 例如:最初隐藏的_变量=“” 当用户选择B时,隐藏变量=“B” 当用户选择C时,隐藏的_variable=“B,C”如下所示 如果用户取消选择某个值,请从隐藏的变量中删除该值Java 如何按照在jsp页面上选择复选框的顺序获取复选框的值?,java,javascript,jsp,struts2,Java,Javascript,Jsp,Struts2,我在jsp页面中有四个复选框。我希望按照选择的顺序获取它们的值。假设复选框中有值A、B、C、D。如果我先选择B,然后选择D,然后选择A,最后选择C。我应该得到B、D、A、C。这些值需要发送到java 1)添加新的隐藏输入字段。 2) 根据用户选择填充值 3) 读取服务器上的隐藏变量 例如:最初隐藏的_变量=“” 当用户选择B时,隐藏变量=“B” 当用户选择C时,隐藏的_variable=“B,C”如下所示 如果用户取消选择某个值,请从隐藏的变量中删除该值 所有这些都可以通过一些基本的js功能来完
所有这些都可以通过一些基本的js功能来实现,HTML没有允许您排序值的控件。您必须使用JavaScript来跟踪单击内容的顺序(或者为每个选择提交表单) 实现这一点的最简单方法是使用复选框上的单击事件,将隐藏的输入设置为
hidden.value+=this.value
如果取消选中复选框,您需要决定业务逻辑,并实现它。HTML没有允许您排序值的控件。您必须使用JavaScript来跟踪单击内容的顺序(或者为每个选择提交表单) 实现这一点的最简单方法是使用复选框上的单击事件,将隐藏的输入设置为
hidden.value+=this.value
如果取消选中复选框,您需要决定业务逻辑,并实现它。只需使用
将值发送到Java即可
选中/取消选中复选框时,您将调用一个javascript函数,该函数将复选框的值附加(或删除,使用子字符串
和索引of
)到隐藏字段
编辑:这是重复的:只需使用
将值发送到Java
选中/取消选中复选框时,您将调用一个javascript函数,该函数将复选框的值附加(或删除,使用子字符串
和索引of
)到隐藏字段
编辑:这是重复的:尝试使用
$('#isAgeSelected').attr('checked')
这将返回true或fasle尝试使用
$('#isAgeSelected').attr('checked')
这将返回true或fasle可能不是最好的方法,但可以通过迂回的方法来实现,即使用单选按钮的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>
函数updatefo(elemId){
var elem=document.getElementById(“foo”);
元素值=元素值+“,”+elemId;
控制台日志(元素值);
}
函数cleanFoo(){
//现在清洁字符串,以移除边和末端的“,”和
//仅包含一次A、B、C、D
/*
从后面扫描字符串并保留每个ID的最后一次出现
因为用户可以多次选择或单击单选按钮
a,b,c,d,b,b,c,a,d,d,a
保留:b、c、d、a//最终选择
//当我有时间的时候,我可以在这里写代码
*/
}
A
B
C
D
可能不是最好的方法,但可以通过迂回的方法完成,即使用单选按钮的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>
函数updatefo(elemId){
var elem=document.getElementById(“foo”);
元素值=元素值+“,”+elemId;
控制台日志(元素值);
}
函数cleanFoo(){
//现在清洁字符串,以移除边和末端的“,”和
//仅包含一次A、B、C、D
/*
从后面扫描字符串并保留每个ID的最后一次出现
因为用户可以多次选择或单击单选按钮
a,b,c,d,b,b,c,a,d,d,a
保留:b、c、d、a//最终选择
//当我有时间的时候,我可以在这里写代码
*/
}
A
B
C
D
非常感谢大家。最后,我根据大家的建议得出了结果。
我用过:
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]);
}
}
arr=新数组();
函数更新优先级(elemId){
var elem=document.getElementById(“foo”);
var chkBox=document.getElementById(elemId);
var options=document.getElementsByName('checkbox1');
if(document.getElementById(elemId.checked){
警报(“已检查”);
arr.push(elemId);
}
否则{
对于(变量i=arr.length;i>=0;i--){
if(arr[i]==elemId){
阵列拼接(i,1);
打破
}
}
}
对于(变量i=(arr.length-1);i>=0;i--){
警报(“检查值列表::”+arr[i]);
}
}
我以相反的顺序得到输出。这不是一个问题,因为我可以从Java方面轻松地处理这个问题。非常感谢大家。最后,我根据大家的建议得出了结果。 我用过: 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]);
}
}
arr=新数组();
函数更新优先级(elemId){
var elem=document.getElementById(“foo”);
var chkBox=document.getElementById(elemId);
var options=document.getElementsByName('checkbox1');
if(document.getElementById(elemId.checked){
警报(“已检查”);
arr.push(elemId);
}
否则{
对于(变量i=arr.length;i>=0;i--){
if(arr[i]==elemId){
阵列拼接(i,1);
打破
}
}
}
对于(var i=(arr.len