checkbox "Ne plus afficher ce message".

Eléphant du PHP | 97 Messages

20 févr. 2012, 16:11

Bonjour à tous,

j'aurai une petite question à vous poser en ce qui concerne les messages d'alerte que l'on peut recevoir en cliquant sur un bouton.

En gros, je souhaiterai que si quelqu'un clique sur un bouton d'une page de mon site, un message d'alerte vienne l'informer d'une chose. Cependant, je ne veux pas le saouler avec ce message à chaque fois qu'il aura à cliquer sur le bouton, c'est pourquoi je souhaiterai également créer à l'intérieur de cette alerte une petite checkbox ou quelque chose du genre, qui, s'il est coché, permettra à l'utilisateur de ne plus voir le message dans le futur.

Sauriez-vous comment faire ?

merci d'avance.

Eléphant du PHP | 179 Messages

20 févr. 2012, 17:59

Il me semble que les navigateurs le font eux mêmes au bout de 3 alertes ( enfin du moins FF et Chrome )

Eléphant du PHP | 97 Messages

20 févr. 2012, 18:28

Mon problème c'est que le message d'alerte que j'ai pour le moment, il se fait sur un bouton submit. Et donc quand je clique sur le bouton submit, j'ai pour l'instant mon message d'alert qui se lance, mais ensuite il faudrait que ça fonce vers la page d'appel de fin de formulaire. D'où l'intéret d'un bouton confirm je viens de voir ça. On verra pour la checkbox un peu plus tard, car visiblement elle n'a pas l'air de s'afficher sur FF après de nombreuses tentatives de la faire apparaître en floodant le bouton submit.

Pour l'instant mon code confirm ressemble à ca mais le message ne s'affiche pas :

le bouton submit :
<input type=submit value="Édition d\'une fiche rapport" onClick="nb_client(); return false"/>
mon code javascript actuel
function nb_client()
{
	var minimum=1000;
        var nbclient=document.getElementById("nb_clients").value;
	//alert(nbclient);
	var message = "Le nombre total de clients correspondant à votre demande est très faible.\nLes valeurs qui vous ont été préconisées de manière statistique risquent de ne pas être significatives.\nÊtes-vous sur de vouloir continuer ?";
	//alert(message);
	if (nb_client < minimum)
	{
		var message_conf = confirm (message);
		if (confirm(message))
		{
			document.changerform.submit();
		}
		else
		{
			return false;
		} 
	}
}

Eléphant du PHP | 179 Messages

20 févr. 2012, 18:30

il faut que tu return true; si tu veux que ton script continue, sinon si tu return false; il va couper l'action submit et rien ne se passera

Eléphant du PHP | 97 Messages

20 févr. 2012, 18:38

Ok. ca c'est réglé ! merci !

Mais mon code avec confirm ne fonctionne. Le texte que je souhaite voir affiché ne s'affiche pas

Eléphant du PHP | 179 Messages

20 févr. 2012, 19:12

déclaration de nbclient tu l'écris : nbclient
dans le if tu l'écris : nb_client
hum :)

Eléphant du PHP | 97 Messages

21 févr. 2012, 10:47

Bon, mon truc fonctionne mais malgré tout y'a un truc qui peut sans doute etre modifié un peu.

En fait, quand je clique sur "OK", je retombe immédiatement sur la même fenêtre JavaScript qui me repose la question. Et quand je répond à cette fenêtre, là on me redirige là où il faut, c'est-à-dire que si je dis OK, je passe à la page suivante, si j'"Annule", je reste sur la même page que sur laquelle j'étais.

Ca vient je pense du fait que dans la création de mon bouton submit, je dis de retourner la fonction JavaScript. Mais sans ce return, j'arrive pas a faire fonctionner mes 2 boutons. Que je clique sur annuler ou OK, ca m'envoie comme si j'avais cliqué sur OK.

<input type=submit value="Édition d\'une fiche rapport" onClick="nb_client(); return nb_client()"/>




function nb_client()
{
	var nbclient=document.getElementById("nb_clients").value;
	var minimum=1000;
	var message = "Le nombre total de clients correspondant à votre demande est très faible.\nLes valeurs qui vous ont été préconisées de manière statistique risquent de ne pas être significatives.\nÊtes-vous sur de vouloir continuer ?";
		
	if (nbclient<minimum)
	{
		var message_conf = confirm(message);
		if (message_conf)
		{
			return true;
		}
		else
		{
			return false;
		} 
	}
}

Eléphant du PHP | 179 Messages

21 févr. 2012, 10:56

<input type=submit value="Édition d\'une fiche rapport" onClick="nb_client(); return nb_client()"/>
La tu appelles deux fois la fonction dont la première qui ne retourne rien, donc normal d'avoir deux fois la confirmation dont la première qui n'agit pas.

un simple "return nb_client();" devrait suffire non :) ?

Eléphant du PHP | 97 Messages

21 févr. 2012, 11:03

C'est parfait ! Un grand merci Thibaut !

Eléphant du PHP | 97 Messages

21 févr. 2012, 15:13

Bon,

je suis sincèrement désolé de continuer ce topic mais la je vois pas ce qui va pas :
En plus d'envoyer un message de confirmation pour continuer ou non l'opération que l'utilisateur est en train de faire, je voudrais aussi que l'utilisateur soit alerté du fait qu'il enfreint des lois qui lui empêchent d'accéder à la page suivante. On vérifie par exemple, qu'il rentre bien des chiffres et non des lettres, et on vérifie aussi si les chiffres rentrés sont bien croissants.
Mais alors là ca fonctionne pas du tout comme je le souhaite !

Voila comment je présente mon code :

Création du bouton submit
<input type=submit value="Édition d\'une fiche rapport" onClick="return nb_client()";/>
Fonction nb_client()
function nb_client()
{
	if (checkTableauPuissance())
	{
	
	var nbclient=document.getElementById("nb_clients").value; //on récupère le nb de clients
	var minimum=100000; //il est conseillé d'avoir des réponses sur au moins "minimum clients"
	var message = "Le nombre total de clients correspondant à votre demande est très faible ("+(nbclient)+") .\nLes valeurs qui vous ont été préconisées de manière statistique risquent de ne pas être significatives.\nÊtes-vous sur de vouloir continuer ?";
	
	if (nbclient<minimum)
	{
		var message_conf = confirm(message);
		if (message_conf)
		{
			//document.changerform.submit();
			return true;
		}
		else
		{
			return false;
		} 
	}
	}
}
Et voici la création des fonctions qui sont appelées par la fonction CheckTableauPuissance():
function checkTableauPuissance(){
	var arrayElement = new Array();
	var output=true;
	if(elementExists("in_moyenne_pte")){
		arrayElement.push(document.getElementById("in_moyenne_pte"));
	}
	if(elementExists("in_moyenne_hph")){
		arrayElement.push(document.getElementById("in_moyenne_hph"));
	}
	if(elementExists("in_moyenne_hpd")){
		arrayElement.push(document.getElementById("in_moyenne_hpd"));
	}
	if(elementExists("in_moyenne_hch")){
		arrayElement.push(document.getElementById("in_moyenne_hch"));
	}
	if(elementExists("in_moyenne_hcd")){
		arrayElement.push(document.getElementById("in_moyenne_hcd"));
	}
	if(elementExists("in_moyenne_hpe")){
		arrayElement.push(document.getElementById("in_moyenne_hpe"));
	}
	if(elementExists("in_moyenne_hce")){
		arrayElement.push(document.getElementById("in_moyenne_hce"));
	}
	if(elementExists("in_moyenne_ja")){
		arrayElement.push(document.getElementById("in_moyenne_ja"));
	}
	for(var i=0; i<arrayElement.length-1; i++){
		if(!is_numeric(parseInt(arrayElement[i].value)) || !is_numeric(parseInt(arrayElement[i+1].value))){
			alert("Les puissances préconisées doivent être de type numérique.");
			//return false;
			var output = false;
		}
		else if(parseInt(arrayElement[i].value) > parseInt(arrayElement[i+1].value)){
			alert("Les puissances préconisées doivent être croissantes.");
			//return false;
			var output = false;
		}
	}
	return output;
	//else return true;
	//alert("nombre d'ele : "+arrayElement.length);
}

function is_numeric(input){
	return typeof(input)=='number';
}

function elementExists(id){
	var ele = document.getElementById(id);
	return (ele != null);
}
En fait, mon problème c'est que ma fonction marche toujours, mais si jamais je recois un message qui me dit : Les puissances préconisées doivent être croissantes, je clique sur OK et la je passe à l'étape suivante. Alors que ca ne devrait pas !

Eléphant du PHP | 179 Messages

21 févr. 2012, 15:35

if (checkTableauPuissance())
{
// ton code
}
else
return false;

Eléphant du PHP | 97 Messages

21 févr. 2012, 15:37

.. Quelle bêtise ! Merci encore :)