2009-08-06 6 views
1

Je ne suis pas sûr de la meilleure façon d'expliquer cela ... J'ai une entrée où vous pouvez entrer deux fois, mais aussi une case à cocher si vous souhaitez omettre un certain jour, rendant ainsi les entrées un peu inutile, donc je voudrais les désactiver ...Checkbox change le parent tr, et les entrées contenues dans

Voici ce que j'ai en ce moment pour le HTML (répété 7 fois):

<td><div>From:</div><input type="text" name="F_MON"></td> 
<td><div>To:</div><input type="text" name="T_MON"></td> 
<td class="unavailableday"><input type="checkbox" name="MON_UNAVAIL" value="Y"> Unavailable?</td> 

Et puis le Javascript:

$("tr td input[type=checkbox]").bind("click", function() { 
    var $this = $(this); 
    if($this.is(':checked')) { 
     $this.parents('tr').css({'background-color' : 'lightyellow'}); 
     $this.parents('tr input').siblings('input type=[text]').attr("disabled", true); 
    } 
}); 

Malheureusement quand vous cochez la case, le tr approprié devient jaune ce qui est parfait, mais les entrées précédentes ne le désactivent pas ... Je voudrais aussi faire un .unmask() et changer le .val() quand ils sont désactivé, un peu espérer si je peux obtenir les parents/frères et sœurs droite, il serait facile d'adapter: o

Merci!

Répondre

2

Essayez

$("tr td :checkbox").bind("click", function() { 
    var $this = $(this); 
    if($this.is(':checked')) { 
     var $row = $this.closest('tr'); 
     $row.css('background-color', 'lightyellow'); 
     $this.siblings(':text').attr("disabled", "disabled"); 
    } 
}); 
+0

Absolument parfait, merci beaucoup! Cela fonctionne un traitement absolu maintenant :) Une question rapide ... est-il une alternative à l'option «désactivé»? Je ne veux pas laisser l'utilisateur changer le contenu, mais je veux que l'information soit postée ... readonly ne semble pas fonctionner, pourrait être la fonction mask() que j'utilise? J'ai essayé de démasquer mais pas de joie ... Merci encore! – Nick

+0

Vous pouvez masquer l'entrée et copier la valeur actuelle dans une étiquette que vous affichez à la place de l'entrée masquée. – redsquare

+0

Ce serait génial en fait, merci! Peut-être juste faire une instruction PHP if pour voir si la case est cochée, pourrait aussi être une bonne solution. Merci encore! – Nick

Questions connexes