У меня есть два флажка для каждой строки в таблице с несколькими строками. Здесь мне нужно проверить, что пользователь выбрал флажок для всех строк, а также не выбран для обоих approveCheck
и rejectCheck
. Два скрытых Вот пример кода в jsp
<display:table>
<display:column title="Approve" >
<center>
<input type='hidden' value='' name='approveCheck'>
<input type="checkbox" name="approveCheck" value="${approve.num}" />
</center>
</display:column>
<display:column title="Reject" >
<center>
<input type='hidden' value='' name='rejectCheck'>
<input type="checkbox" name="rejectCheck" value="${approve.num}" />
</center>
</display:column>
</display table>
On Отправить javascript, который я звоню:
function formCheck2(){
var alertMsg = '';
var checkedList1 = window.document.getElementsByName('approveCheck');
var checkedList2 = window.document.getElementsByName('rejectCheck');
var validationFlag = true;
if(checkedList1 == '')checkedList1=0;
if(checkedList2 == '')checkedList2=0;
mainloop:
for(var i = 0; i < checkedList1.length; i++){
for(var i = 0; i < checkedList2.length; i++){
if(checkedList1 !='' && checkedList2 !=''){
if ((checkedList1[i].checked == true || checkedList1[i].checked == "true") && (checkedList2[i].checked == true || checkedList2[i].checked == "true")){
validationFlag = false;
alertMsg = "Cannot check both";
alert('both checked');
break mainloop;
}
else if ((checkedList1[i].checked == false || checkedList1[i].checked == "false") && (checkedList2[i].checked == false || checkedList2[i].checked == "false")){
validationFlag = false;
alertMsg = "need to act on all";
alert('none checked');
break mainloop;
}
else{
validationFlag = true;
}
}
}
}
if(validationFlag){
window.document.forms["Rep"].btnSubmit.disabled = true;
window.document.forms["Rep"].action = '${urlSubmit}';
window.document.forms["Rep"].submit();
}
else{
alert(alertMsg);
return false;
}
}
здесь независимо от того, что я выбираю, я выбираю в блок "нужно действовать на всех".
Могу я предложить использовать переключатели вместо флажков и группировать каждые два переключателя, используя их имя:
<input type="radio" name="Check1" value="${vdapprove.ddr_num}" onClick="toggle(this);"/>
<input type="radio" name="Check1" value="${vdapprove.ddr_num}" onClick="toggle(this);" />
Таким образом, вы будете уверены, что оба не могут быть проверены в одно и то же время
Примечание: вы можете предоставить им разные идентификаторы, чтобы иметь доступ к каждому из них на основе их идентификатора
<input type="checkbox" name="rejectCheck" value="${vdapprove.ddr_num}" /> function Validate(){ var checkedList1 = window.document.getElementsByName('approveCheck'); var checkedList2 = window.document.getElementsByName('rejectCheck'); if(checkedList1[i].checked == true || checkedList1[i].checked == true) //Do something. }