2014-09-06 2 views
0

j'ai vue avec trois zones de texte et un CheckBox:ASP.NET MVC Checboxes activation/désactivation textboxes

@foreach(var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.CheckBox("name") 
     </td> 
     <td> 
      @Html.EditorFor(m => item.Toolbox) 
     </td> 
     <td> 
      @Html.EditorFor(m => item.Name) 
     </td> 
     <td> 
      @Html.EditorFor(m => item.Link) 
     </td> 
    </tr> 
} 

Et comment je peux créer un code JS pour lier cette diffirent cases à cocher textboxes? Cette case à cocher "nom" doit désactiver/activer trois zones de texte pour chaque boucle de temps qui le crée. Il y a plus de 500 articles dans le modèle.

+0

Check [Cette réponse] (http: // stackoverflow.com/questions/2330209/jquery-checkbox- enable-disable) et je crois que si vous utilisez le code comme vous le collez vous aurez beaucoup de cases à cocher avec le même id qui n'est pas bon – szpic

Répondre

0

Vous pouvez définir un compteur et créer une classe unique ou un attribut pour chaque bloc. Par exemple:

<table id="myTable"> 
    @{ 
      int c = 0; 
      for(int i = 0; i < Model.Count; i++) 
      { 
       c++; 
       <tr class="@("block"+c)"> 
        <td> 
         @Html.CheckBox("name", new {data_block=c}) 
        </td> 
        <td> 
         @Html.EditorFor(m => item.Toolbox) 
        </td> 
        <td> 
         @Html.EditorFor(m => item.Name) 
        </td> 
        <td> 
         @Html.EditorFor(m => item.Link) 
        </td> 
       </tr> 
      } 
</table> 

puis javascript code:

$(function(){ 
     $('#myTable checkboxes').click(function(){ 
      var checkbox = $(this), 
      blockNum = checkbox.data('block'), 
      inputs = $('tr.block'+blockNum), 
      state = checkbox.is(':checked'); 

      $.each(inputs, function(i, el){ 
       $(el).prop("disabled", state); 
      }); 
     }); 
    }); 
0

Une autre façon

<table id="myTable"> 
       @foreach(var item in Model) 
       { 
        <tr> 
         <td> 
          @Html.CheckBox("name", new { @class = "nameCheckbox" }) 
         </td> 
         <td> 
          @Html.TextBoxFor(m => item.Toolbox, new { @class = "someCleverClassName" }) 
         </td> 
         <td> 
          @Html.TextBoxFor(m => item.Name, new { @class="someCleverClassName" }) 
         </td> 
         <td> 
          @Html.TextBoxFor(m => item.Link, new { @class="someCleverClassName" }) 
         </td> 
        </tr> 
       } 
      </table> 

Et le javascript

$(function(){ 
    $('#myTable .nameCheckbox').click(function(){ 
     $(this).closest('tr').find('.someCleverClassName').prop("disabled", $(this).prop('checked')); 
    }); 
}); 
+0

Eh bien cela semble ne rien faire, cliquer sur checboxes ne pas désactiver ou activer si les zones de texte sont désactivées. – Lubudubu1010

+0

Mon mauvais. faisait cela sans test, j'ai corrigé le code ci-dessus. Apparemment, editorfor ne sort pas les noms de classe CSS. mais textboxfor fait .. voir ce violon ici https://dotnetfiddle.net/n4dntY – ingo