Bonjour,
Dans un tableau généré en php j'affiche une liste d'emails sélectionnables par checkbox. Un lien mailto apparaît au dessus et en dessous du tableau pour envoyer un mail aux adresses sélectionnées. (ceci fonctionne)

J'ai ajouté une checkbox afin de sélectionner toutes les adresses et c'est là que le problème apparaît: quand tout est sélectionné via la checkbox spéciale (select all) les adresses disparaissent et inversement, si je désélectionne tout le mail concerne toutes les adresses.

Si j'avais déjà sélectionné une checkbox le select all n'opère aucun changement au premier clique (au deuxième on se retrouve inversé, aucune sélection -> tous les emails).

Voici le code JS:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(function () { // this line makes sure this code runs on page load
	$('.checkall').click(function () {
		$(this).parents('fieldset:eq(0)').find(':checkbox').attr('checked', this.checked);
	});
});
 
function addressMailto() {
      var fields = $(':input[name=\'mailto[]\']').serializeArray(),
	  		address = '',
			linkmailto = '';
      jQuery.each(fields, function(i, field){
		address += field.value + ",";
      });
 
	  linkmailto = '<p><a href="mailto:?bcc=' + address + '" ><img src="img/email.png" alt="" class="small" title="envoyer un email"/> Envoyer un mail aux adresses s&eacute;lectionn&eacute;es</a></p>';
 
	  $("#sendMail").html(linkmailto);
	  $("#sendMailRemote").html(linkmailto);
    }
et ma page php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<form method="post">
<fieldset>
 
<?php
echo '<div id="sendMailRemote"></div>';
?>
 
<table>
<tr>
<th><img src="img/email.png" alt="" class="small" title="envoyer un email"/><input id="all" type="checkbox" class="checkall"/></th>
</tr>
<tr>
<input class="mailto" type="checkbox" name="mailto[]" value="email1" title="envoyer un email &agrave; email1"/>
</tr>
<tr>
<input class="mailto" type="checkbox" name="mailto[]" value="email2" title="envoyer un email &agrave; email2"/>
</tr>
</table>
 
<?php
echo '<div id="sendMail" class="sendmail"><p><a href="mailto:?bcc='.implode(',',$mailto_all).'" ><img src="img/email.png" alt="" class="small" title="envoyer un email"/> Envoyer un mail aux clients</a></p></div>';
?>
 
</fieldset>
</form>
 
<script>
//ajouter une remote d'email en haut du tableau
var linkMail = document.getElementById("sendMail").innerHTML;
$("#sendMailRemote").html(linkMail);
$(":checkbox").click(addressMailto);		
</script>
Je vous épargne ma boucle pour créer le $mailto_all qui renvoie bien un array des emails.

Je pense qu'il faut modifier le Javascript mais je ne vois pas comment... L'un d'entre vous aurait-il une idée ?