2012-03-31 18 views
0

Ich habe eine Tabelle mit Kontrollkästchen und einem Dropdown-Menü in jeder Zeile. Ich möchte, dass die Dropdown-Eingabefelder beim Laden der Seite deaktiviert werden, aber aktiviert werden, wenn das Kontrollkästchen für diese bestimmte Zeile aktiviert ist.JQuery - Aktivieren Sie die Dropdown-Liste der Tabellenzeile, wenn das Kontrollkästchen aktiviert ist

Können Sie mir mit JQuery Code helfen, der das tun kann?

<thead> 
<tr> 
<th>Box</th><th>No</th><th>No 1</th><th>No 2</th><th>No 3</th><th>No 4</th><th>Chosen</th><th>Date</th> 
</tr> 
</thead> 
<tbody> 
<tr> 
<td><input type="checkbox" name="ID[]" value="341"/></td><td>1</td><td>1</td><td>5</td><td>13</td><td class='key'><select name="chosen_key"> 
<option value="1" selected="selected">N</option> 
<option value="2">Y</option> 
<option value="3">M</option> 
<option value="4">A</option> 
<option value="5">R</option> 
</select></td><td>2011-01-28</td></tr> 
<tr> 
<td><input type="checkbox" name="ID[]" value="342"/></td><td>2</td><td>6</td><td>10</td><td>23</td><td class='key'><select name="chosen_key"> 
<option value="1">N</option> 
<option value="2" selected="selected">Y</option> 
<option value="3">M</option> 
<option value="4">A</option> 
<option value="5">R</option> 
</select></td><td>2011-01-28</td></tr> 
. 
. 
. 
</tbody> 

> Blockquote 

Vielen Dank für Ihre Hilfe.

Antwort

1
$(document).ready(function() { 
    // Disable select elements 
    $('select').each(function() { 
    $(this).attr('disabled','true'); 
    }); 

    // Enable them on click 
    $('input[type=checkbox]').click(function() { 
    var s = $(this).parent('td').siblings('td.key').children('select'); 

    if(s.is(':disabled')) { 
     s.removeAttr('disabled'); 
    } else { 
     s.attr('disabled','true'); 
    } 
    }); 

}); 

Sie nicht wirklich müssen den ersten Teil, weil Sie den ersten disabled Wert in Ihrem HTML festlegen.

+0

ja in der Tat, es gibt keine Notwendigkeit für den ersten Teil –

+0

Können Sie diese Version überprüfen? Weil es nicht auf Klick funktioniert. – elfuego1

+0

Es funktioniert jetzt. Ich habe @ mashits [jsFiddle] (http://jsfiddle.net/6KnBT/26/) aktualisiert, wenn du es in Aktion sehen willst. – hohner

0

Blick auf diesen fiddle

verwendet es einfach JavaScript-Funktion des Drop-down zu wechseln, wenn u Kontrollkästchen klicken.

+0

Wenn Sie Ihr DOM dynamisch aktualisieren, funktioniert das nicht, da Sie sich auf die Inline-'onclick()' -Funktion des Elements verlassen (was meiner Meinung nach sowieso nicht wirklich Best Practice ist). – hohner

+0

ja wahr. aber es gibt Flexibilität in dem Sinne, dass Sie es verwenden können, wo Sie wollen, ohne von Klassenattributen abhängig zu sein. –

+0

Sie müssen sich nicht auf Klassenattribute verlassen. Du kannst jeden Selektor benutzen, den du willst ... – hohner

1

Verwendung Nach jquery für diese.

$(document).ready(function() { 
    // Disable select elements 
    $('select').each(function() { 
    $(this).attr("disabled","disabled"); 
    }); 

    // Enable them on click 

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

     if($(this).closest("tr").find("td").children("input[type=checkbox]").prop("checked")) 
     {   
     $(this).closest("tr").find("td").children("select").removeAttr("disabled"); 
    } 
     else 
     { 
      $(this).closest("tr").find("td").children("select").attr("disabled","disabled"); 
     } 
    }); 

}); 

Siehe diesen Link für Demo: http://jsfiddle.net/nEGTv/15/

+0

Fast da ;-) Wenn ich die erste Zeile überprüfe, dann die zweite, die dritte usw. und dann die Unechen in der gleichen Reihenfolge 1., 2. usw., nur die letzte gibt das Dropdown-Menü in den deaktivierten Status zurück. Irgendwelche Ideen? – elfuego1

+0

Wie Sie sagen, ich habe meinen Code aktualisieren und in jsfiddle Link auch zeigen –

Verwandte Themen