2012-03-14 163 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