Evènements javascript - HTML/CSS - Programmation
Marsh Posté le 23-07-2004 à 09:10:08
tu pe pas faire un onclick et dans la fonction faire un if radio.checked ... else ne rien faire ?
Marsh Posté le 23-07-2004 à 13:13:40
arma a écrit : tu pe pas faire un onclick et dans la fonction faire un if radio.checked ... else ne rien faire ? |
J'ai essayé de faire ça mais ça ne marche pas :
entre <HEAD> et </HEAD> :
<script langage="javascript">
function afficher()
{
var a = document.getElementById("dest" );
var m = document.getElementById("aff" );
if (document.form1.salut.value == 1)
{
a.style.display = "block";
m.style.display = "block";
}
else
{
if (document.form1.salut.value == 2)
{
a.style.display = "none";
m.style.display = "none";
}
}
}
</script>
et dans mon body :
Message VIP :
<input type=radio name="salut" value="1" OnClick="javascript:afficher();">
<span id=aff style="display: none">à envoyer à :</span><?
$sql = mysql_query("SELECT * FROM inscrits ORDER BY nom" );
$nbl = mysql_num_rows($sql);
?>
<select name=dest id=dest style="display: none" class=form>
<?
for ($i=0 ; $i<$nbl ; $i++)
{
$id_dest = mysql_result($sql,$i,id_inscrit);
if ($id_dest != $id_inscrit)
{
$nom = mysql_result($sql,$i,nom);
$prenom = mysql_result($sql,$i,prenom);
?>
<option value="<? echo $id_dest ?>"><? echo $nom." ".$prenom ?></option>
<?
}
}
?>
</select>
<br>
Message public : <input type=radio name="salut" value="2" OnClick="javascript:afficher();">
Et ça ne marche pas, il ne m'affiche jamais la liste déroulante alors que lorsque je faisais une condition avec
if (a.style.display == "none" ) { a.style.display = "block"; }
else {
if (a.style.display == "none" ) { a.style.display = "none"; }
}
ça marchait très bien seulement si l'on reclique sur le même bouton radio et bien on réefface la liste déroulante et vise versa donc ça ne va pas
Marsh Posté le 23-07-2004 à 14:03:10
et avec onFocus a la place onClick ?
Je viens de tester vite fait a apriori ca fonctionne...
Marsh Posté le 23-07-2004 à 14:14:39
Bysounours a écrit : et avec onFocus a la place onClick ? |
Ca fonctionne que si tu ne clique pas ailleurs entre deux clic sur le bouton radio. Clique n'importe ou dans la page et reclic sur le même bouton radio, ça va faire comme si ce n'était pas le même et il efface la liste
Marsh Posté le 23-07-2004 à 14:33:04
c'est possible. J'ai testé en affichant les lignes d'un taleau, donc forcement quand je clique sur 'oui' il me l'affiche, meme si je clique 15 fois dessus, Forcement j'ai pas vu la différence.
C'est pour ca que je pensais que ca fonctionnait. J'ai pas d'autre idée, désolé...
Marsh Posté le 23-07-2004 à 14:37:00
Bysounours a écrit : c'est possible. J'ai testé en affichant les lignes d'un taleau, donc forcement quand je clique sur 'oui' il me l'affiche, meme si je clique 15 fois dessus, Forcement j'ai pas vu la différence. |
Ben en fait je pense qu'il faudrait faire en testant la valeur du bouton radio comme j'ai dit mais je comprend pas pourquoi ça ne fonctionne pas ça
if (document.form1.salut.value == 1)
{
a.style.display = "block";
m.style.display = "block";
}
else
{
if (document.form1.salut.value == 2)
{
a.style.display = "none";
m.style.display = "none";
}
}
Marsh Posté le 23-07-2004 à 14:39:45
c'est parce que tu accèdes mal aux valeurs des boutons radio
regarde sur ma page le code javascript du test 10:
http://membres.lycos.fr/mathixjs/test.htm?#test10
Marsh Posté le 23-07-2004 à 14:47:23
Clapsou a écrit : |
je dis peut-etre une connerie mais ca serait pas true ou false les valeurs ?
esaye avec ca:
|
Marsh Posté le 23-07-2004 à 14:54:11
mathix a écrit : c'est parce que tu accèdes mal aux valeurs des boutons radio |
Dsl je n'ai pas compris comment tu fais pour ton test 10 car toi tu vérifies si l'un des bouton radio du nom Radio10 est sélectionné alors que moi je fais une condition sur la valeur du bouton radio
J'ai testé ça ça ne marche pas non plus :
<script langage="javascript">
function afficher()
{
var a = document.getElementById("dest" );
var m = document.getElementById("aff" );
var c = document.getElementByName("salut" );
if (c.value == "1" )
{
a.style.display = "block";
m.style.display = "block";
}
else
{
if (c.value == "2" )
{
a.style.display = "none";
m.style.display = "none";
}
}
}
</script>
Marsh Posté le 23-07-2004 à 14:55:31
Bysounours a écrit : je dis peut-etre une connerie mais ca serait pas true ou false les valeurs ?
|
Ouais mais vu que les boutons radio s'apellent forcemment tous les deux salut ça sera toujours true jpense
Marsh Posté le 23-07-2004 à 15:02:51
Oauis j'avais pas fait gaffe à leur nom.
Et si tu crée 2 fonctions, une qui affiche et une qui masque ?
<input type=radio name="salut" value="1" OnClick="javascript:afficher();">
<input type=radio name="salut" value="2" OnClick="javascript:masquer();">
et comme fonctions :
function afficher()
{
var a = document.getElementById("dest" );
var m = document.getElementById("aff" );
if (document.form1.salut.value == 1)
{
a.style.display = "block";
m.style.display = "block";
}
}
function masquer()
{
var a = document.getElementById("dest" );
var m = document.getElementById("aff" );
if (document.form1.salut.value == 2)
{
a.style.display = "none";
m.style.display = "none";
}
}
je pense que ca peut marcher et tu peux meme virer le if a mon avis.
Marsh Posté le 23-07-2004 à 15:07:45
Bysounours a écrit : Oauis j'avais pas fait gaffe à leur nom. |
Bravo chef tu as trouvé la solution! Trop merci
Marsh Posté le 23-07-2004 à 15:10:09
Mais de rien, ca m'a occupé un peu au boulot cet ap midi !
Marsh Posté le 23-07-2004 à 15:11:38
Bysounours a écrit : Mais de rien, ca m'a occupé un peu au boulot cet ap midi ! |
Y a même plus besoin du if comme ça c'est réglé:
<script langage="javascript">
function afficher()
{
var a = document.getElementById("dest" );
var m = document.getElementById("aff" );
a.style.display = "block";
m.style.display = "block";
}
function masquer()
{
var a = document.getElementById("dest" );
var m = document.getElementById("aff" );
a.style.display = "none";
m.style.display = "none";
}
</script>
Des fois les choses les plus simples ne nous sautent pas aux yeux!
Marsh Posté le 23-07-2004 à 03:37:19
Quel est l'évènement qui permet d'appeler une fonction seulement quand on clique sur un bouton radio qui n'était pas encore checked ? Parce que Onclick ça prend en compte tous les clics sur le bouton radio, y compris si le bouton est déjà sélectionnée! Oncheck ça existe ?
Merci