根据选定的单选按钮限制复选框

时间:2013-06-09 15:19:34

标签: javascript vb.net radio-button

是否可以根据用户之前选择的单选按钮限制复选框的数量?我有4个单选按钮& 4个复选框。
当用户选择第一个单选按钮时,允许用户选择1复选框。
当用户选择第二个单选按钮时,允许用户选择2复选框 当用户选择第三个单选按钮时,允许用户选择3复选框。等等。 我去过这里,但这不是我想要的。 Limit checkboxes with jquery based on checked radio buttons

这就是我尝试过的。但它不适用于第二个单选按钮。

function chkcontrol(j) {
    var total = 0;
    for (var i = 0; i < document.form1.cb.length; i++) {

        if (RadioButton1.Checked) Then
        {
            if (total > 1) {
                alert("Please Select only 1")
                document.form1.cb[j].checked = false;
                return false;
            }
        }

        if (RadioButton2.Checked) Then
        {
            if (total > 2) {
                alert("Please Select only 2")
                document.form1.cb[j].checked = false;
                return false;
            }
        }

        if (document.form1.cb[i].checked) {
            total = total + 1;
        }
    }
} 

3 个答案:

答案 0 :(得分:0)

您使用的是哪种语言或框架?请添加标签。如果是JavaScript,则区分大小写:已检查

您还要返回false,但不返回true,这是不一致的。

答案 1 :(得分:0)

for循环应该与其他代码分开。循环选中复选框,总计检查的数量。然后,在此之后单独检查单选按钮。

var total = 0;
for (var i = 0; i < document.form1.cb.length; i++) {
    if (document.form1.cb[i].checked) {
        total += 1;
    }
}
// now look at the radio buttons

答案 2 :(得分:0)

你的情况..在VB中

Function ChkSum() as Integer
   Dim nChkSum as Integer 
   if checkbox1.Checked then nchksum += 1
   if checkbox2.Checked then nchksum += 1
   if checkbox3.Checked then nchksum += 1
   if checkbox4.Checked then nchksum += 1
   Return nChkSum 
End Function

Function LimitCheck() as Integer
   if radiobutton1.checked then return 1
   if radiobutton2.checked then return 2
   if radiobutton3.checked then return 3
   if radiobutton4.checked then return 4
End Function

因此您可以在checkbox checkedchanged事件中控制检查限制

Private Sub MyCheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged

  Dim chk as CheckBox = CType(Sender,CheckBox)
  If chk.Checked then
     if chksum > limitcheck Then chk.Checked = False
  End If
End Sub