2010-08-10 7 views
0

J'utilise Jquery dans ma page pour cacher les boutons que je ne veux pas montrer à moins que nécessaire. Dans ce cas, c'est une table avec plusieurs lignes que je cache le bouton Supprimer sauf si je sélectionne une ligne à supprimer ... De même, je cache le bouton qui contrôle la manipulation des lignes jusqu'à ce qu'il y ait plus d'une rangée. J'utilise le code suivant pour cela.Masquer les boutons quand ils ne sont pas nécessaires

jQuery(document).ready(function() { 
       if (jQuery(tableId).find("input[type='checkbox']").length == 1) { 
        jQuery(headerCheckbox).hide(); 
        jQuery(removeButtonId).hide(); 
        jQuery(upButtonId).hide(); 
        jQuery(downButtonId).hide(); 
       } else if (jQuery(tableId).find("input[type=checkbox]:checked").length == 0) { 
        jQuery(removeButtonId).hide(); 
        jQuery(upButtonId).hide(); 
        jQuery(downButtonId).hide(); 
        jQuery(headerCheckbox).click(function() { 
         jQuery(tableId).find("input[type='checkbox']").attr('checked', jQuery(headerCheckbox).is(':checked')); 
        }); 
       } 

       jQuery(tableId).find("input[type='checkbox']").each(function() { 
        if (jQuery(this).attr('id') != headerCheckbox) { 
         jQuery(this).click(function() { 
          if (jQuery(headerCheckbox).is(':checked')) { 
           if (jQuery(tableId).find("input[type=checkbox]:checked").length != 1) { 
            jQuery(removeButtonId).show(); 
            if (rowCount > 1) { 
             jQuery(upButtonId).show(); 
             jQuery(downButtonId).show(); 
           } 
          } else if (jQuery(tableId).find("input[type=checkbox]:checked").length > 0) { 
           jQuery(removeButtonId).show(); 
           if (rowCount > 1) { 
            jQuery(upButtonId).show(); 
            jQuery(downButtonId).show(); 
           } 
          } else { 
           jQuery(removeButtonId).hide(); 
           jQuery(upButtonId).hide(); 
           jQuery(downButtonId).hide(); 
          } 
         } 
        }); 
        } 
       }); 
      }); 

Ce code sans

if (rowCount > 1) { 
           jQuery(upButtonId).show(); 
           jQuery(downButtonId).show(); 
          } 

fonctionne très bien pour le bouton supprimer, mais le moment j'ajouter cette ligne le comportement se détraque et ne fonctionne que lorsque la sélection tout est sélectionné ...

Pour expliquer les variables utilisées la plupart d'entre eux sont juste des ID à partir d'éléments correspondants ... sauf rowcount qui est un nombre qui est généré par un autre code ... J'ai vérifié en chrome (Firebug) et le nombre est généré correctement. Mais encore le code ne semble fonctionner que lorsque je clique sur le sélectionner tous les autres fois il ne fonctionne pas aussi la peau ne fonctionne plus lorsqu'elle n'est pas sélectionnée, ... où vais-je me tromper?

Répondre

1

Je pense que vous manque une accolade fermante sur la première si (rowCount> 1), il devrait ressembler à ceci:

jQuery(tableId).find("input[type='checkbox']").each(function() { 
        if (jQuery(this).attr('id') != headerCheckbox) { 
         jQuery(this).click(function() { 
          if (jQuery(headerCheckbox).is(':checked')) { 
           if (jQuery(tableId).find("input[type=checkbox]:checked").length != 1) { 
            jQuery(removeButtonId).show(); 
            if (rowCount > 1) { 
             jQuery(upButtonId).show(); 
             jQuery(downButtonId).show(); 
            } // <----This one was missing 
           } 
          } else if (jQuery(tableId).find("input[type=checkbox]:checked").length > 0) { 
           jQuery(removeButtonId).show(); 
           if (rowCount > 1) { 
            jQuery(upButtonId).show(); 
            jQuery(downButtonId).show(); 
           } 
          } else { 
           jQuery(removeButtonId).hide(); 
           jQuery(upButtonId).hide(); 
           jQuery(downButtonId).hide(); 
          } 
         } 
        }); 
        } 
       }); 

Ce manque croisillon certainement causer des problèmes étranges.

+0

Vive c'était comme ça .. une telle erreur idiote ... haha ​​ – Jeremiah

+0

Ha vous seriez surpris de voir à quelle fréquence une seconde paire d'yeux va attraper des choses que vous avez manqué après l'avoir déchiqueté pendant des heures: P – cincodenada

Questions connexes