2010-02-24 2 views
0

J'ai une table html qui est générée avec php.un bon moyen de vérifier quelle ligne est modifiée (html/jquery/php)

Cette liste peut contenir des enregistrements de plus de 20000 enregistrements, j'ai donc ajouté un pagination sur cette liste. Dans cette liste, vous pouvez modifier les lignes que vous aimez, lorsque vous cliquez sur Enregistrer, il enregistre les modifications dans une table temporaire et uniquement après avoir appliqué les modifications, les modifications réelles sont appliquées dans la table principale. Avant de cliquer sur Appliquer les modifications, il affiche dans la liste les lignes modifiées avec un indicateur.

Maintenant tout cela fonctionne, mais actuellement, lorsque vous modifiez seulement 1 ligne sur les 50 qui sont affichés, il enregistre les 50 lignes dans la table temporaire. Ce qui me donne un indicateur sur tous les 50 enregistrements (pas vraiment ce que je veux).

Ma question est: quelle est une bonne façon de savoir quelle ligne est modifiée avant de l'enregistrer dans ma table temporaire?

+0

Un champ d'indicateur "modifié" dans la table temporaire n'est-il pas une option? –

+0

Comment changer les lignes? Quand la table temporaire est-elle mise à jour? –

Répondre

0

Okay J'ai trouvé une solution à mon propre problème.

Avec un peu d'aide de jquery j'ai réussi à atteindre ma solution.

J'ai ajouté un champ de texte caché dans ma table avec un class = "changed". J'ai 4 champs modifiables (2 champs date et 2 cases à cocher) sur chaque champ J'ai ajouté une fonction jquery click basée sur le nom de classe qui est le même pour tous les champs de ma liste (4 noms de classes différents pour chaque rangée).

exemple jquery case:

$('input.activated').click(function(){ 

    $(this).parents('tr').find('input.changed').attr('value', 'changed'); 

}); 

Alors, quand je clique maintenant enregistrer des modifications -> mes chèques de code php si le champ caché égal à « changé » pour enregistrer les lignes modifiées dans ma table temp.

Cela me semble une bonne solution.

0

Vous pouvez utiliser la délégation d'événements en JavaScript. Vous attachez un écouteur d'événement au niveau parent, pas sur des enfants individuels, puis écoutez les événements et vérifiez la cible.

Chaque objet Event possède une propriété cible. La cible est l'objet qui a déclenché l'événement.

Vous pouvez voir un bon exemple sur le site de documentation jQuery: http://docs.jquery.com/Events/jQuery.Event#event.target

délégation de l'événement est particulièrement utile sur de grandes quantités de données qui ont besoin de gestionnaires d'événements. En savoir plus sur ce que la délégation d'événement est à: http://icant.co.uk/sandbox/eventdelegation/

+0

jQuery 1.4.2 vient de sortir avec une aide plus simple juste pour cela: http://api.jquery.com/delegate/ –

Questions connexes