web-dev-qa-db-fra.com

jquery - cochez toutes les cases avec le nom du tableau js

Je veux utiliser une fonction "vérifier tout" JQuery sous une forme comme celle-ci: http://jetlogs.org/jquery/jquery_select_all.html

Mon problème est que je génère mon formulaire à partir d'un script php, et je ne sais pas exactement combien de cases à cocher j'aurai à l'avance. J'utilise la convention de dénomination "tableau" pour pouvoir obtenir toutes les valeurs de case à cocher sélectionnées dans mes données $ _POST ... donc mes cases à cocher sont comme ça:

<input type="checkbox" name="items[]" value="<?php echo $id ?>">

mais cette déclaration JQuery ne fonctionne pas:

$("input[@name=items[]]").each(function()    
{    
    this.checked = checked_status;    
});

probablement parce que le "[]" à la fin de mes "items" gâche la déclaration JQuery ... J'ai essayé d'écrire @ name = items [] comme ça: "@ name = items []", et de mettre des anti -slash avant le [et] donc ils ne sont pas considérés comme des caractères spéciaux mais cela n'a pas fonctionné ...

Si quelqu'un connaît une solution et souhaite la partager, ce serait génial !! :)

23
Pierre

Échappez aux supports internes avec \\ (pas d'espace) - cela devrait résoudre le problème.

Ce sélecteur fonctionne pour moi:

$('input[name=items\\[\\]]')
59
rochal

Essayez d'utiliser

$('input[name="items[]"]')

Pas besoin d @ et utilise ". Notez que le sélecteur en dehors des guillemets est '. Sinon, vous pourriez provoquer une erreur d'analyse.

14
Emil Ivanov

Tout d'abord, votre attribut de nom doit être utilisé pour définir +1 éléments avec le même nom. Il est pratiquement identique à l'attribut id et doit être unique par élément, à l'exception des références, mais ce n'est pas le cas pour vous.

Essayez d'utiliser l'attribut class, il est fait pour les choses que vous voulez faire!

une autre chose est que dans votre code, vous pouvez uniquement définir vos cases à cocher sur `` coché '', mais jamais à décocher, ce code définira vos cases à cocher sur vrai ou faux, selon ce qu'il obtient comme attribut de l'élément cliqué.

vous pouvez faire quelque chose comme ça:

définissez votre case à cocher tout avec un identifiant

 <input type="checkbox" id="checkAll">

Ensuite, cochez toutes les cases à cocher/décocher une classe

<input type="checkbox" class="checked">

Et vous pouvez faire quelque chose comme ça dans jQuery

$("#checkAll").click( function(){
 var checkedValue = $(this).attr("checked");
 $("input.checked").attr("checked", checkedValue); });

cela changera toutes les cases à cocher avec la classe cochée au même attribut coché que celui avec l'id checkAll

4
Kennethvr
$("input[name='smsid[]']")

Ce code fonctionne bien pour moi ...

2
Kannan Prasad