begin process at 2012 05 29 16:44:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Function & Méthodes

 > 

problème fonction javascript dans formulaire html


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème fonction javascript dans formulaire html

lundi 25 mai 2009 à 11:52:30 | problème fonction javascript dans formulaire html

BumRush09

bonjour,
j'ai un probleme avec des fonctions javascripts qui permettent de modifier dynamiquement le contenu de champ textbox, elle fonctionnent seulement si je retire la balise du formulaire, meme un "alert".
sinon l'erreur est :"cet objet ne gère pas cette méthode..."
 voici un petit bout de code :

<script>
function quantite_frais(link)
{
 val_quantite_frais=link.value;
 document.forms[0].getElementById('montant_total_frais').value=(val_montant_frais*val_quantite_frais)+((val_montant_frais*val_quantite_frais)*val_marge_frais);
}
</script>


echo'<form name="modif" method="GET" action="#">';

echo'<td><input type="text" class="textbox" name="quantite_frais"  onchange="quantite_'.$table.'(this)" value="'.$valeur["quantite"].'"/></td>';

 echo'<td><input type="text"  class="textbox" name="montant_frais"  value="'.$valeur["montant"].'" onchange="montant_'.$table.'(this)"/></td>';

 echo'<td><input type="text"  class="textbox"name="marge_frais" value="'.$valeur["marge"].'" onchange="marge_'.$table.'(this)"/></td>';

 echo'<td><input type="text"  class="textbox" name="montant_total_frais'" readonly="true" value="'.$valeur["montant_total"].'" /></td>';

je ne comprend pas car j'ai déjà utiliser cette méthode et cela fonctionner.

merci d'avance pour vos réponse.
lundi 25 mai 2009 à 11:55:21 | Re : problème fonction javascript dans formulaire html

BumRush09

rebonjour, edit ce n'est pas un formualire en "GET" mais en "POST"
j'ai un probleme avec des fonctions javascripts qui permettent de modifier dynamiquement le contenu de champ textbox, elle fonctionnent seulement si je retire la balise du formulaire, meme un "alert".
sinon l'erreur est :"cet objet ne gère pas cette méthode..."
 voici un petit bout de code :

<script>
function quantite_frais(link)
{
 val_quantite_frais=link.value;
 document.forms[0].getElementById('montant_total_frais').value=(val_montant_frais*val_quantite_frais)+((val_montant_frais*val_quantite_frais)*val_marge_frais);
}
</script>


echo'<form name="modif" method="POST" action="#">';

echo'<td><input type="text" class="textbox" name="quantite_frais"  onchange="quantite_'.$table.'(this)" value="'.$valeur["quantite"].'"/></td>';

 echo'<td><input type="text"  class="textbox" name="montant_frais"  value="'.$valeur["montant"].'" onchange="montant_'.$table.'(this)"/></td>';

 echo'<td><input type="text"  class="textbox"name="marge_frais" value="'.$valeur["marge"].'" onchange="marge_'.$table.'(this)"/></td>';

 echo'<td><input type="text"  class="textbox" name="montant_total_frais'" readonly="true" value="'.$valeur["montant_total"].'" /></td>';

je ne comprend pas car j'ai déjà utiliser cette méthode et cela fonctionner.

merci d'avance pour vos réponse.
lundi 25 mai 2009 à 12:41:26 | Re : problème fonction javascript dans formulaire html

Bul3

Membre Club

bonjour,

__ si tu nous mettais la page html résultante et pas le php,
   ça irait bien mieux pour nous !
__ éviter des noms connus du javascript ( link par exemple )
__ document.forms[0].getElementrById ?
   pourquoi ne pas mettre un name et utiliser document.name_formulaire
      ou un id et faire document.getElementById ('id du formulaire')
      ça évite que ce soit obligatoirement le 1er formulaire
   t'es sûr qu'on peut utiliser getElementById sur
      autre chose que document ?
__ onchange="quantite_'.$table.'(this)"...
   tu vas donc avoir autant de fonction que de quantite créées ?
   met le même name pour tous et utilise
   et tu génères plusieurs lignes ? c'est possible ou pas ?
   oui : met le même name et utilise
         document.name_formulaire.name_champ[index]
         il te reste à gérer le cas où il n'y a qu'une seule
         ligne de crééer ( crée une ligne bidon caché ) et commence
         index à partir de 1
   non : pourquoi un name avec une variable php alors
@+
lundi 25 mai 2009 à 13:34:47 | Re : problème fonction javascript dans formulaire html

BumRush09

merci de t'être penché sur le sujet
j'ai oublié quelques points importants désolé :
- le problème existe avec un simple "alert()" dans le script dès que la balise "form" est présente, sinon les fonctions javascript s'éxécute correctement
- '.$table.' est utilisé car j'ai le même traitement plusieurs fois à un mot près
- j'en vient ici justement car l'utilisation d'un tableau dynamique javascript avec ligne caché que l'on dupplique ne permettait pas l'accès aux autres élement que celui appelé par la fonction
-voici le code simplifié :

<script>
function quantite_frais(link)
{
   alert("fonction javascript");
}
</script>

echo'<form name="modif" method="POST" action="#">';

echo'<td><input type="text" class="textbox" name="quantite_frais"  onchange="quantite_frais(this)" value="'.$valeur["quantite"].'"/></td>';

 echo'<td><input type="text"  class="textbox" name="montant_frais"  value="'.$valeur["montant"].'" onchange="montant_frais(this)"/></td>';

 echo'<td><input type="text"  class="textbox"name="marge_frais" value="'.$valeur["marge"].'" onchange="marge_frais(this)"/></td>';

 echo'<td><input type="text"  class="textbox" name="montant_total_frais'" readonly="true" value="'.$valeur["montant_total"].'" /></td>';

echo'</table>';
echo'<input type="submit" class="bouton_formulaire" name="modifier_detail_devis" value="valider"/>';
 echo'</form>';

lundi 25 mai 2009 à 13:56:48 | Re : problème fonction javascript dans formulaire html

Bul3

Membre Club

__ onchange="montant_frais(this)"
   il n'existe pas de fonction montant_frais

__ evite les name d'éléments = nom de fonctions

le reste... déjà dit :

__ évite les noms connus ( voire réservé ) par le lavascript
   ici, link

__ donne nous la page html, pas le php !!!!!!!
   sinon, dis moi comment on devine le contenu
   de tes $variables ??????
lundi 25 mai 2009 à 14:31:27 | Re : problème fonction javascript dans formulaire html

BumRush09

ok voila le code html avec les balises "form" :

<html>
<head>
 <link rel="stylesheet" href="css/style_test.css" type="text/css" />
</head>
 
<body class="nospace">
 <div class="main">
  <div class="central">
   <div class="corps">

   

<h1>devis N°  D-2009-001</h1>
 <TABLE id="col_centre">
  <TR id="col_centre">
   <TH id="col_centre">Numeros Devis</TH>
   <TH id="col_centre">Societe</TH>
   <TH id="col_centre">Rang</TH>
   <TH id="col_centre">Date Devis</TH>
   <TH id="col_centre">Date envoi</TH>
   <TH id="col_centre">Libelle</TH>
   <TH id="col_centre">Montant</TH>
   <TH id="col_centre">Montant corrige</TH>
   <TH id="col_centre">Termine</TH>
   <TH id="col_centre">Envoye</TH>
   <TH id="col_centre">Regul</TH>
   <TH id="col_centre">Obtenu</TH>
   <TH id="col_centre">Perdu</TH>
     </TR>
<TR id="col_centre"><TD id="col_centre">D-2009-001</TD><TD id="col_centre">douce-hydro</TD><TD id="col_centre">0</TD><TD id="col_centre">2009-05-15</TD><TD id="col_centre"></TD><TD id="col_centre"></TD><TD id="col_centre">705 ¤</TD><TD id="col_centre">0 ¤</TD><TD id="col_centre">0</TD><TD id="col_centre">0</TD><TD id="col_centre">0</TD><TD id="col_centre">0</TD><TD id="col_centre">0</TD></TR></TABLE>

<script type="text/javascript">
/***** frais *****/

//fonction mise à jour var globale quantité frais
function quantite_frais(link)
{
 alert("fonction javascript");
 //val_quantite_frais=link.value;
 //document.getElementById('montant_total_frais').value=(val_montant_frais*val_quantite_frais)+((val_montant_frais*val_quantite_frais)*val_marge_frais);
}

//fonction mise à jour var globale marge frais
function marge_frais(link)
{
 //var val_marge_frais=link.value;
 //document.getElementById('montant_total_frais').value=(val_montant_frais*val_quantite_frais)+((val_montant_frais*val_quantite_frais)*val_marge_frais);
}

// mise à jour var globale identifie nature frais choisie
function nature_frais(link)
{
 /*var val_nature_frais=link.selectedIndex;
 if(val_nature_frais==0)
 {
  val_montant_frais=taux_km_devis_utilisateur;
  document.getElementById('montant_frais').value=taux_km_devis_utilisateur;
  document.getElementById('montant_total_frais').value=(val_montant_frais*val_quantite_frais)+((val_montant_frais*val_quantite_frais)*val_marge_frais);
 }
 else
 {
  val_montant_frais=taux_frais[val_nature_frais];
  document.getElementById('montant_frais').value=taux_frais[val_nature_frais];
  document.getElementById('montant_total_frais').value=(val_montant_frais*val_quantite_frais)+((val_montant_frais*val_quantite_frais)*val_marge_frais);
 }*/
}

//fonction écriture montant frais
function montant_frais(link)
{
 //val_montant_frais=link.value;
 //document.getElementById('montant_total_frais').value=(val_montant_frais*val_quantite_frais)+((val_montant_frais*val_quantite_frais)*val_marge_frais);
 
}


/***** variable frais *****/
 var val_nature_frais=0;
var val_quantite_frais=1;
var val_marge_frais=0.2;
var val_montant_frais=2;
//tableau des taux frais récupère résultat requête php en tête
var  taux_frais = new Array();
var taux_frais=["0.355","40","50"];

var taux_km_devis_utilisateur=0.6;
</script>
<h2> Détail Frais</h2>

<table id="resultat">
<tr><th><b><u>rang</u></b></th><th><b><u>nature frais</u></b></th><th><b><u>Désignation</u></b></th><th><b><u>quantite</u></b></th><th><b><u>montant</u></b></th><th><b><u>marge</u></b></th><th><b><u>montant total</u></b></th><th><b><u>valide</u></b></th><th><b><u>modifier</u></b></th></tr>
<tr><td>0</td><td>REPAS</td><td>test 3</td><td>12</td><td>40 ¤</td><td>0.2</td><td>480 ¤</td><td>0</td><td><a href="index.php?pageref=devis_detail_frais&id_devis=1&devis_detail_action=modifier19">modifier</td></tr>
</table>
<h2>Modifier</h2><form name="modif" method="POST" action="#">
<table class="saisie2">
<tr><th>Rang</th><th>NatureFrais</th><th>Designation</th><th>Quantité</th>
<th>Montant</th><th>Marge</th><th>MontantTotal</th><th>Valide</th><th></th></tr>
<tr><td><input  type="text" class="textbox" name="rang_frais" value="0" /></td>
<td><select name="nature_frais" class="textbox" onclick="nature_frais(this)">
   <option value='KM'>KM</option><option  selected  value='REPAS'>REPAS</option>
   <option value='HOTEL'>HOTEL</option></select></td>
<td><input type="text" class="textbox" name="designation_frais" value="test 3"/></td>
<td><input type="text" class="textbox" name="quantite_frais"  onchange="quantite_frais(this)" value="12"/></td>
<td><input type="text"  class="textbox" name="montant_frais"  value="40" onchange="montant_frais(this)"/></td>
<td><input type="text"  class="textbox"name="marge_frais" value="0.2" onchange="marge_frais(this)"/></td>
<td><input type="text"  class="textbox" name="montant_total_frais" readonly="true" value="480" /></td>
<td><input type="text" class="textbox" size="1" MAXLENGTH="1" name="valide_frais" value="0"  /></td></tr></table>
<input type="submit" class="bouton_formulaire" name="modifier_detail_devis" value="valider"/></form>


<table class="bouton"><TR><TH>INDICER</TH><TH>MODIFIER</TH><TH>MODIFIER CONTENU</TH></tr><tr><td><a href="index.php?pageref=devis_ajouter_rang&id_devis=1"><img src="image/bouton_rang.png" border=0></a></td><td><a href="index.php?pageref=devis_modifier&id_devis=1"><img src="image/modifier.png" border=0></a></td><td><a href="index.php?pageref=devis_ajouter_detail&id_devis=1"><img src="image/ajouter.png" border=0></a></td><tr></table>   </div>
   
   <div class="pied">
   
   </div>
 </div> 
  <div class="menu">
   <a href="index.php?pageref=devis_detail_synthese&id_devis=1">synthese devis</a><br><br><a href="index.php?pageref=devis_detail_frais&id_devis=1">details frais</a><br><br><a href="index.php?pageref=devis_detail_prestation&id_devis=1">details prestation</a><br><br><a href="index.php?pageref=devis_detail_materiel&id_devis=1">details materiel</a><br><br>
  
 </div>  
   
 </div>
 
 <div class="header">
  <IMG SRC="image.jpg"align="left" height="70%" ALT="EAII Interface de gestion">
<h1>interface de gestion</h1>  
<script language="Javascript">
//calcul largeur et hauteur de la fenetre
if (document.body)
{
 var larg = (document.body.clientWidth);
 var haut = (document.body.clientHeight);
}
else
{
 var larg = (window.innerWidth);
 var haut = (window.innerHeight);
}

var taille = larg;   // Longueur du menu
var taille2 = 30; // Hauteur du menu

var couleur_fond = "#BEC6CE";   //couleur de fond du menu
var couleur_rollover = "YELLOW";  //couleur de la cellule au passage de la souris
var couleur_texte = "#FFFFFF";   //couleur du texte
var couleur_texte_over = "#000000"; //couleur du texte lors du passage de la souris

var taille_texte  = 2;    //Taille de la police
var police_texte  = "Verdana";  //Type de police (Arial, Verdana...)

var target = true;  // True si ouverture dans le même document
var frame = "";  // Si frame, placer target à true et indiquer le nom de votre frame  
var nbelem = 6;  // Nombre d'éléments (categories)

var titre = new Array(nbelem);
var liens = new Array(nbelem);


titre[0] = '<a id="menu_haut" href="index.php?pageref=devis"> Devis </a>';

titre[1] = '<a id="menu_haut" href="index.php?pageref=connexion"> Affaires</a>';

titre[2] = '<a href="index.php?pageref=connexion"> Facturation</a>';

titre[3] = '<a href="index.php?pageref=connexion"> Commandes</a>';

titre[4] = '<a href="index.php?pageref=connexion"> Planning</a>';

titre[5] = '<a href="index.php?pageref=personnel_identifier"> Identifier</a>';

 

<!----------------------------------affichage et gestion menu ---------------------------------------------->

function aff_menu()
{
 var taille_cellule = taille / nbelem;
 cible = (!target)? "_blank":frame;
 document.write("<table height=\""+taille2+"\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\""+taille+"\" bgcolor=\""+couleur_fond+"\" style=\"border-color:#000000; border-width: 1px; border-style: solid\"><tr>");
 for(i=0;i<nbelem;i++)
 {
  document.write("<td align=\"center\" width=\""+taille_cellule+"\" onmouseover=\"mOvr(this,'"+couleur_rollover+"');\" onmouseout=\"mOut(this,'"+couleur_fond+"');\"  bgcolor=\""+couleur_fond+"\"><a style=\"color: "+couleur_texte+"; text-decoration: none\" href=\""+liens[i]+"\" target=\""+cible+"\"><font face=\""+police_texte+"\" size=\""+taille_texte+"\">"+titre[i]+"</font></a></td>");
 }
  
 document.write("</tr></table>");
}


function mOvr(src,clrOver)
{
 if (!src.contains(event.fromElement))
 {   
   src.style.cursor = 'hand';
   src.bgColor = clrOver;
   src.children.tags('A')[0].style.color = couleur_texte_over;
 }
}
 
 function mOut(src,clrIn)
{
 if (!src.contains(event.toElement))
 {
  src.style.cursor = 'default';
  src.bgColor = clrIn;
  src.children.tags('A')[0].style.color = couleur_texte;
 }
}

aff_menu();
</script>
 </div>  
<body>         
</html>

 et le code sans la balise "form" qui affiche le pop-up

<h2>Modifier</h2><table class="saisie2"><tr>
<th>Rang</th><th>NatureFrais</th><th>Designation</th><th>Quantité</th><th>Montant</th><th>Marge</th>
<th>Montant Total</th><th>Valide</th><th></th></tr>
<tr><td><input  type="text" class="textbox" name="rang_frais" value="0" /></td>
<td><select name="nature_frais" class="textbox" onclick="nature_frais(this)">
   <option value='KM'>KM</option><option  selected  value='REPAS'>REPAS</option>
   <option value='HOTEL'>HOTEL</option></select></td>
   <td><input type="text" class="textbox" name="designation_frais" value="test 3"/></td>
<td><input type="text" class="textbox" name="quantite_frais"  onchange="quantite_frais(this)" value="12"/></td>
<td><input type="text"  class="textbox" name="montant_frais"  value="40" onchange="montant_frais(this)"/></td>
<td><input type="text"  class="textbox"name="marge_frais" value="0.2" onchange="marge_frais(this)"/></td>
<td><input type="text"  class="textbox" name="montant_total_frais" readonly="true" value="480" /></td>
<td><input type="text" class="textbox" size="1" MAXLENGTH="1" name="valide_frais" value="0"  /></td>
</tr></table>

<table class="bouton"><TR><TH>INDICER</TH><TH>MODIFIER</TH><TH>MODIFIER CONTENU</TH></tr><tr><td><a href="index.php?pageref=devis_ajouter_rang&id_devis=1"><img src="image/bouton_rang.png" border=0></a></td><td><a href="index.php?pageref=devis_modifier&id_devis=1"><img src="image/modifier.png" border=0></a></td><td><a href="index.php?pageref=devis_ajouter_detail&id_devis=1"><img src="image/ajouter.png" border=0></a></td><tr></table>   </div>

lundi 25 mai 2009 à 14:47:29 | Re : problème fonction javascript dans formulaire html

Bul3

Membre Club

inutile de tout nous mettre ! ça décourage !!!!

extrait l'essentiel ... le nécessaire, tout le nécessaire,
mais rien que le nécessaire...


et regarde la console d'erreur ou active le debogage !
exemple,( avec FF  ):
Erreur : nature_frais is not a function
Fichier Source : file:///D:/Mes%20documents/%C3%A0%20D%C3%A9truire/!test.htm Ligne : 1
Erreur : nature_frais is not a function
Fichier Source : file:///D:/Mes%20documents/%C3%A0%20D%C3%A9truire/!test.htm Ligne : 1
Erreur : quantite_frais is not a function
Fichier Source : file:///D:/Mes%20documents/%C3%A0%20D%C3%A9truire/!test.htm# Ligne : 1


NavigateursQuelques Explications
Chrome
contrôler page actuelle / Options pour développeurs
/ Console Javascript
FireFox
Outils / Console d'erreurs
et mieux : télécharger FireBug
Internet
Explorer
activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS
K-Meleon
Outils / Console d'erreurs
Opera
Outils / Avancé / Console d'erreurs
Safari
Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
<true/>


lundi 25 mai 2009 à 15:05:06 | Re : problème fonction javascript dans formulaire html

BumRush09

ok merci pour tes conseil je télécharge ça.
Mais dans ce cas pourquoi il ne trouve pas les fonctions dans le script du dessus quand il y a le formulaire et qu'il les trouve lorsqu'il n'y ai pas?
lundi 25 mai 2009 à 15:20:49 | Re : problème fonction javascript dans formulaire html

Bul3

Membre Club
Réponse acceptée !
>>Mais dans ce cas pourquoi il ne trouve pas les fonctions
>>dans le script du dessus
déjà, relis ce que je te disais
link, name élements = nom function....
après on verra !
et pour test test, ne garde que l'essentiel
tu remettras au fûr et à mesure en testant
lundi 25 mai 2009 à 15:55:35 | Re : problème fonction javascript dans formulaire html

BumRush09

ok alors tout d'abord merci ça fonctionne pour une premier post je suis impresionné que ça aille si vite.
le problème venait de la fonction qui à le meme nom que l'input text.
au risque de passé pour un mito j'ai dans une autre page le même traitement où les noms et fonctions sont identiques donc je suis quand meme étonné.
enfin j'ai peut être loupé quelque chose.

merci .


Cette discussion est classée dans : formulaire, echo, val, frais, quantite


Répondre à ce message

Sujets en rapport avec ce message

Big prob formulaire [ par nalum ] AU SECOURSBonjour j'ai un gros probleme avec mon formulaire php, les appostrophes ( ' ) ne fonctionne pas et font une erreur jai deja essayé   htmlent réactualiser la page après formulaire [ par ocane ] Bonjour j'ai le formulaire suivant dont le traitement se fait sur la même page :echo ' Valider un formulaire avec un href [ par marjoBZH ] Bonjour, voici mon code développez en PHP : while($lig=mysql_fetch_row($res)) { echo(""); echo("$lig[2]"); echo(""); echo("<form name='courses' me Verification de formulaire [ par Dunya ] Bonjour J'essaie désespérément de vérifier un formulaire avec javascript depuis des jours. J'ai beaucoup lu y compris sur ce forum mais je ne vois pa Prob formulaire [ par nalum ] J'ai un probleme avec mon formulaire :  echo "";echo "" ;echo "<div align='center Checkbox ne marche pas dans Opera ?? [ par pam_ela ] Bonjour Le script suivant marche dans firefox et IE mais pas dans OperaQui peut m'aider ?Merci d'avance !_____________________________________________ faire sauter le curseul d'un input text vers le suivant [ par kgadhi ] Bonjour tout le monde et merci pour votre aide,Je cherche un moyen de faire passer le curseur d'un input text à un autre mais automatiquement,j'ai réc show/hide formulaire avec checkbox [ par rachidphp93 ] bonjour tout le monde;j'ai un formulaire principale dont des zone sont specifique à un type de user, je souhaite qu'oon cochant un checkb Afficher valeur de plusieurs liste deroulante [ par danvy ] Bonjour a tous,voila je cherche à afficher, dans un calque de ma page html, les valeurs de mes listes deroulante. J'ai 2 listes deroulantes et je voud Formulaire [ par w_minisplash_w ] Bonjour à tous,J'ai 3 select dont les attributs name sont "azerty[0]['qwerty']", "<font color="#808080" face="Aria


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales