【问题标题】:Javascript to check both checkbox not checked for one rowJavascript检查两个复选框未选中一行
【发布时间】:2014-01-05 22:32:32
【问题描述】:

我在多行表中的每一行都有两个复选框。在这里,我需要验证 该用户已选中所有行的复选框,但也未选中 approveCheckrejectCheck。隐藏的两个这里是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>

在提交我调用的 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;   
    }
}

无论我选择什么,我都会选择“需要对所有人采取行动”块。

【问题讨论】:

  • 你能做一个小提琴吗?

标签: javascript html jsp checkbox displaytag


【解决方案1】:

我可以建议使用单选按钮而不是复选框,并使用它们的名称将每两个单选按钮分组:

<input type="radio" name="Check1" value="${vdapprove.ddr_num}" onClick="toggle(this);"/>
<input type="radio" name="Check1" value="${vdapprove.ddr_num}" onClick="toggle(this);" />

这样您就可以确保不能同时检查两者

注意: 您可以给他们不同的 ID,以便能够根据他们的 ID 访问每个 ID

【讨论】:

  • 不能提供单选按钮,因为要求提供复选框
  • 好的,另一个建议是验证 onClick,所以在每个复选框中,onClick 会检查另一个复选框是否被选中,如果是警报,或者取消选中另一个复选框。 onClick="验证();" &lt;input type="checkbox" name="rejectCheck" value="${vdapprove.ddr_num}" /&gt; 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. }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
相关资源
最近更新 更多