2012-03-14 132 views
0

下午好开发者, 这是我在asp.net中的内容,我想用户只能选中2个复选框,超过那个弹出框应该会弹出。如何检查4复选框中的任何2复选框?

<body> 
     <form id="form1" runat="server"> 
     <div> 
      <table width="100%"> 
       <tr> 
        <td> 
        <asp:CheckBox id="q3a" runat="server" Text="Public" /> 
        </td> 
        <td> 
        <asp:CheckBox id="q3b" runat="server" Text="void" /> 
        </td> 
        <td> 
        <asp:CheckBox id="q3c" runat="server" Text="protected"/> 
        </td> 
        <td> 
        <asp:CheckBox id="q3d" runat="server" Text="return" /> 
        </td> 
       </tr> 
      </table> 
      <asp:Button ID="btnSubmit" Text="submit" runat="server"/> 
     </div> 
     </form> 
    </body> 

我怎么能写javascript对于这一点,我已经尝试过,但找不到任何出路,请帮助...

+0

为什么不使用内置的ASP.NET-Validator控件?你可以使用CustomValidator来达到这个目的,它也可以在客户端使用适当的['ClientValidationFunction'](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientvalidationfunction的.aspx)。 – 2012-03-14 09:14:31

回答

1

您应该立即停止用户,并选择第三个选项因此只能提交两个选中的值并避免服务器端验证。

客户端onchange事件应该连接到一个类似于此的功能;

function validationCheck(checkbox) { 
    if(checkbox.checked) { 
    var count = 0; 

    count += document.getElementById('q3a').checked ? 1 : 0; 
    count += document.getElementById('q3b').checked ? 1 : 0; 
    count += document.getElementById('q3c').checked ? 1 : 0; 
    count += document.getElementById('q3d').checked ? 1 : 0; 

    if(count > 2) { 
     alert('You may only select two options.'); 
     checkbox.checked = false; 
    } 
    } 
} 

输入应与onchange="validationCheck(this);"一起呈现。

0

与@Tim同意,你可以只写一个on_click功能适用于所有的复选框然后验证是否选择了多于两个chekboxes并在需要时显示错误消息。

0

您可以为复选框添加客户端onclick事件,并使用jQuery来检查复选框是否已选中。您可以有一个应该测量阈值的计数器,如果超过阈值则弹出消息。

$('.mycheckbox').click(function(){ 
var count = $("input:checked").length; 
} 

注:请一个类的名称属性添加到所有相同的类名的复选框。

1

您可以使用jQuery:

$("input[type='checkbox']").change(function() { 

     var n = $("input:checkbox:checked").length; 
     if (n > 2) { 
      alert('2 are already selected!'); 
      $(this).attr("checked", false); 
     } 
    }); 

如果你真的想用JavaScript试试这个功能:

function checkCondition(chkbox) { 
    var buttonGroup = document.getElementsByName("group"); 
    var total = 0; 
    for (var i = 0; i < buttonGroup.length; i++) { 
     if (buttonGroup[i].checked) { 
      total++; 
     } 
    } 
    if (total > 2) { 
     alert('2 are already selected!'); 
     chkbox.checked =false; 
    } 
} 

,还可以设置你的复选框onclick="checkCondition(this)"并设置其name属性为group值例如

+0

任何javascript functon ???我不熟悉jQuery – 2012-03-14 09:39:43