M000004965
Messages postés147Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention12 juin 2008
-
18 févr. 2008 à 13:58
M000004965
Messages postés147Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention12 juin 2008
-
18 févr. 2008 à 16:36
Bonjour,
(je suis débutant en PHP et donc une vraie quiche en JS...)
voila, j'ai un formulaire avec des critères de filtres en plusieurs listes (pas de prblème)
j'ai le résultat issu des critères de filtres. Ce résultat est présenté dynamiquement sous forme de checkbox avec id.
et un bouton de commande appelé "Generer".
<script type="text/javascript">
<--
function Detail_Demande()
{
Element_Liste1 = [document.filtres.liste1.selectedIndex].value;
with (document.Resultats)
{
for (u = 0; u < ChkResult.length; u++)
if (ChkResult[u].checked = = true)
{
Element_Chk = [document.Resultats.ChkResult.].value;
fusion = Element_Liste1+Element_Chk;
document.lstdemande.value = fusion; comment je force un retour à la ligne dans ma zone de texte
}
}
}
-->
</script>
// Zone de texte vérouillée pour afficher toutes les possibilités
// Soit : 4 entrées de la liste1 * n entrées chreckbox cochées
echo '<TEXTAREA NAME="lstdemande" ROWS="5" COLS="50" READONLY>';
echo '</TEXTAREA>
';
Comment je peux faire pour que ma fonction prenne toutes les entrées de la liste1 et les associent à toutes les entrées checkbox cochées et les écrire ligne par ligne dans ma zone de texte
Mon code ne fonctionne pas et je ne comprend pas pourquoi.
D'avance merci
Autodidact, je ne demande qu'à apprendre... Merci de votre aide
A voir également:
Novice JS : sos appel de fonction JS par fonction php
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 18 févr. 2008 à 15:36
onClick= "Detail_Demande(); return false; "
sinon le formulaire est transmis ( ici à la même page )
, et on ne voit pas ce qu'il y a dans le textarea puisque réffiché.
>>au cas où aucune checkbox ne serai cochée
faire un test
mais dans <form onsubmit ="return ( Detail_Demande());"...>
et dans le bouton submit enlever le onclick
si cette fonction retourn false, le formulaire n'est pas transmis.
true il l'est
>>il est toujours préférable de faire référence à un objet par son ID plutôt que par son NOM ?!
euh... ben non.
c'est en général plus simple pour répondre, c'est tout.
avec le php, ne sont transmis que les value éléments qui ont un name
alors pourquoi ajouter un id, dans ce cas ?
perso je préfère nettement document.name_formulaire.name_élément
( avec IE, name_element suffirait mais avec FF, il faut tout lui dire )
mais chacun ses goûts, et les vaches sont bien gardées.
>>pour le déclaratif des variables en JS
s'il n'y a pas de var, ou un var hors des fonctions, ce sont des variables globales
var dans une foncion : locales et c'est plus mieux (?)
for (u = 0; u < document.Resultats.ChkResult.length; u++)
ça devrait le faire
M000004965
Messages postés147Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention12 juin 2008 18 févr. 2008 à 16:36
La soluce complète avec tous mes remerciements à Bultez et à Codes-Sources
<script type="text/javascript">
function Detail_Demande()
{
var Element_Liste1;
var Element_Chk;
var fusion;
fusion = "";
Element_Liste1 = document.Filtres.liste1.options[document.Filtres.liste1.selectedIndex].value;
with (document.Resultats)
{
for (u = 0; u < ChkResult.length; u++)
{
M000004965
Messages postés147Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention12 juin 2008 18 févr. 2008 à 14:04
OUPSSS ! excusez,
le titre n'est plus vraiment en adéquation avec la question, mais comme je cherche en permanence, je change tout le temps pour essayer de solutionner....
désolé
Autodidact, je ne demande qu'à apprendre... Merci de votre aide
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 18 févr. 2008 à 14:17
Bonjour,
franchement : à quoi sert le php ici ? ( où alors, c'est un extrait pour nous montrer )
mais s'il n'y a pas de $variables... les echo 'html ou javascript' sont inutiles
il y a plusieurs erreurs de syntaxe ( php et javascript )
les voici corrigés ( pas toutes ! voir ma remarque en fin )
il manque aussi var très souvent,
ce qui fait qu'on utlise des variables globales... inutiles
<script type="text/javascript">
function Detail_Demande()
{
Element_Liste1 = document.Filtres.liste1.options[document.Filtres.liste1.selectedIndex].value;
with (document.Resultats)
{
for (u = 0; u < ChkResult.length; u++)
if (ChkResult[u].checked == true)
{
Element_Chk = document.Resultats.ChkResult.value;
fusion = Element_Liste1 + Element_Chk;
document.getElementById("lstdemande").value = fusion; //comment je force un retour à la ligne dans ma zone de texte
}
}
}
</script>
// Zone de texte vérouillée pour afficher toutes les possibilités
// Soit : 4 entrées de la liste1 * n entrées chreckbox cochées
<TEXTAREA id="lstdemande" ROWS="5" COLS="50" READONLY>
</TEXTAREA>
Element_Chk = document.Resultats.ChkResult.value;
certes... mais lequel ? il y en a 4...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 18 févr. 2008 à 14:27
on fera d'autres remarques après...
du style pourquoi with et ne pas utiliser ?
pourquoi onclick sur un bouton submit, alors que onsubmit sur le form est là pour ça ....
<hr /> Cordialement Bul [mon Site] [M'écrire]
j'essai et je te fait un retour, merci pour ton aide
laisse moi un peu de temps, il faut que je transpose vis à vis de mon vrai code.
pour le déclaratif des variables en JS , je me documente sur le sujet
pour quoi :
onClick ="Detail_Demande();return false;"
au cas où aucune checkbox ne serai cochée
J'en conclus, qu'en JS, il est toujours préférable de faire référence à un objet par son ID plutôt que par son NOM ?!
C'est presque good ! merci !!!
ci dessous le code:
<script type="text/javascript">
function Detail_Demande()
{
Element_Liste1 = document.Filtres.liste1.options[document.Filtres.liste1.selectedIndex].value;
with (document.Resultats)
{
for (u = 1; u < ChkResult.length; u++)
if (ChkResult[u].checked == true)
{
Element_Chk = document.Resultats.ChkResult[u].value;
fusion = Element_Liste1 + " - " + Element_Chk;
document.getElementById("lstdemande").value = fusion; //comment je force un retour à la ligne dans ma zone de texte
}
}
}
</script>
M000004965
Messages postés147Date d'inscriptionmercredi 3 décembre 2003StatutMembreDernière intervention12 juin 2008 18 févr. 2008 à 16:32
ok ok lol
j'en était un peu loin...
mais merci, j'ai apris pleins de choses !
il ne me reste plus qu'à trouver la solution du retour à la ligne dans ma zone de texte
Quand je rajoute /r/n il me le met dans le texte
que je fasse 1 seul (/n ou /r), que je les inverses ou que je soit sous IE ou FF, rien à faire il me les colles
j'ai :