【问题标题】:Limit checkboxes based on selected radio buttons根据选定的单选按钮限制复选框
【发布时间】:2013-06-10 10:57:36
【问题描述】:

是否可以根据用户之前选择的单选按钮来限制复选框的数量?我有 4 个单选按钮和 4 个复选框。
当用户选择第一个单选按钮时,用户可以选择一个复选框。
当用户选择第二个单选按钮时,允许用户选择 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;
        }
    }
} 

【问题讨论】:

    标签: javascript vb.net radio-button


    【解决方案1】:

    您使用什么语言或框架?请添加标签。如果是 JavaScript,则区分大小写:checked

    您也返回了false,但没有返回true,这是不一致的。

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

      • 但是我们不应该循环遍历单选按钮,首先确定哪个已被选中,然后计算已选中的复选框的数量吗?
      【解决方案3】:

      你的情况..在 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
      

      【讨论】:

      • 哦,我该如何进行checkedchanged事件呢?大声笑,我是 VS 2008 的新手。:x
      • 对于此代码..您必须使用带有单选按钮 1,2,3,4 和复选框 1,2,3,4 .. 然后将此代码复制到您的表单中
      • 我已经按照说明使用了带有单选按钮的表单。但是我的后面代码中的 CheckBox1 等仍然存在错误
      • @user2353680 : 也许有错误..再试一次
      • @user2353680:如果这个答案对你有帮助..how-does-accepting-an-answer-work..
      猜你喜欢
      • 2012-06-07
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      相关资源
      最近更新 更多