2012-03-27 75 views
0

我有一個小問題,我正在尋找,但我找不到我需要什麼,我有3個複選框和一個窗體中的文本框,我需要驗證用戶只可編輯的文本框,如果他們alredy檢查一個複選框,只能選擇其一我嘗試這個辦法:驗證該複選框是必需的文本框

$("#tbCodCliente").validate({ 
       rules: { 
        checkbox: { 
        required: 'input[type="checkbox"]:checked', 
        minlength: 1 
        } 
       }, 
       messages: { 
        checkbox: "Please check at least one." 
       } 

tbCodCliente是窗體的文本框

,或者嘗試

('#tbCodCliente').change(function() { 
       if($("input:checked").length == 0) { 
      // 
        $("#request-form").validate({ 
         rules: { 
          checkbox: { 
           required: 'input[type="checkbox"]:checked', 
           minlength: 1 
           } 
         }, 
         messages: { 
          checkbox: "Please check at least one." 
         } 
        });   
      //   
       } 
      }); 

這個是我的複選框代碼

<%= Html.CheckBox("cbCodigo") %> <label class="inline" for="Codigo">Codigo</label> 
<%= Html.CheckBox("cbNombreCliente") %> <label class="inline" for="NombreCliente">Nombre del cliente</label> 
<%= Html.CheckBox("cbCiudad") %> <label class="inline" for="Ciudad">Ciudad</label> 

回答

1

我會在默認情況下禁用的文本框,然後在變化的事件處理程序啓用它(和力量的唯一一次一個選中的複選框)。

$(document).ready(function(){ 
    $('#tbCodCliente input[type="checkbox"]').change(function(e) { 
     if($("input:checked").length == 0) { 
      $("#request-form").validate({ 
       rules: { 
        checkbox: { 
         required: 'input[type="checkbox"]:checked', 
         minlength: 1 
        } 
       }, 
       messages: { 
        checkbox: "Please check at least one." 
       } 
      }); 
     } 
     else{ 
      $("input[type='text']:disabled").removeAttr('disabled'); 
      $("input:checked").not($(e.target)).removeAttr('checked'); 

     } 
    }); 
}); 

jsFiddle

+0

哦謝謝!,從來不認爲在這種選擇,我怎麼禁止? addattr? – 2012-03-27 21:38:49

+1

添加$(「input [type ='text']」)。attr(「disabled」,「disabled」);作爲準備好的事件處理程序的第一行。 – devstruck 2012-03-27 21:42:32

+0

它的作品謝謝! – 2012-03-27 22:18:47