2010-11-22 13 views
0

J'essaie de mettre à jour un tableau global lorsqu'un utilisateur cocher ou décocher des cases dans un formulaire. Le tableau sera ensuite soumis au serveur pour mettre à jour les options cochées dans la base de données. J'ai même poussé les identifiants des cases cochées dans un tableau, mais je ne sais pas comment les supprimer.Suppression d'éléments spécifiques du tableau global sur la case à cocher vérifier et dé-vérifier avec JavaScript

J'ai créé un jsFiddle de base pour démontrer ici:

http://jsfiddle.net/ArFuz/

PS - le tableau willbe correctement plus tard :) un espace de noms

Répondre

2

Pourquoi faire ce travail sur chaque clic, il suffit de faire lorsque le formulaire est soumis - il y a un: sélecteur vérifié, vous pouvez aussi utiliser plutôt que sélection et éléments itérez que vous n'êtes pas intéressé par

Comme suggéré jyoseph -., vous pouvez utiliser le tableau de serialize ici pour construire un tableau nom/valeur

par exemple

+0

Le problème est qu'il y a une pagination dans la table. Chaque fois qu'une page est appelée, il n'y a pas de post à mettre à jour les valeurs. D'où le tableau global et la nécessité de mettre à jour à chaque vérification/un-vérifier. – RyanP13

+1

@ RyanP13 Ah - les dernières nouvelles des exigences de rupture! Avec cette info je n'aurais pas dit le dessus! – redsquare

+1

P.S J'utiliserais .delegate plutôt qu'un événement click sur toutes les cases à cocher – redsquare

2

Puisque vous en boucle sur toutes les cases à chaque fois , videz simplement le tableau au début et ne remettez que les éléments cochés:

ids = []; 

if (this.checked) {  
    ids.push(this.id); 
} 
+0

J'espère que ça ne vous dérange pas, j'ai échangé '$ (this) .is (": checked ")' avec les plus efficaces 'this.checked' et' $ (this) .attr ("id") 'avec le plus efficace' this.id'. Le code de l'OP comportait une petite erreur, que j'ai également corrigée. +1 pour votre réponse –

+0

Très bien - merci de le réparer. – Jon

1

Je pense que vous pourriez être bien avec jQ uery serializeArray() (api link)

$('#myForm input[type=checkbox]').change(function(){ 

    // get all checked checkboxes 
    var ids = $('myForm input[type=checkbox]:checked').serializeArray(); 

}); 

EDIT: JSBin example