Version complète: sur le forum Webmaster Hub : N'afficher une phrase que si un champ de saisie est renseigné, comment svp ?
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > AjaX et JavaScript
sanddy
Bonjour,

J'ai un champ de saisie qui me permet d'afficher des frais d'actes puis une phrase me calculant le prix actes en main.

J'aimerais afficher "Prix actes en main" que si ce dernier champ de saisie est différent de 0, comment faire svp ???

Actuellement, j'ai :

CODE
echo "<b>Frais d'actes :</b><br /><input".$readonly." type=\"text\" size=\"12\" name=\"fraisactes\" id=\"fraisactes\" value=\"".$bien["fraisactes"]."\" onkeyup=\"GetId('prixactes').innerHTML=parseFloat(this.value) + parseFloat(GetId('prixvente').value);\" /> &euro;\n";

echo "<i>Prix actes en main : <span id=\"prixactes\">".($bien["prixnet"] + $bien["emoluments"] + $bien["fraisactes"])."</span> &euro;</i>";


et dès qu'on change les frais d'actes, cela calcule le prix net + emolument + frais d'actes et change le total de la phrase.

Donc comment faire pour ne pas afficher cette phrase si le champ de saisie "Frais d'actes" reste à 0.00 ?

Merci d'avance.

Dan
Bonjour,

Tout simplement en faisant précéder ton "echo" par :
CODE
if($bien["fraisactes"] > 0) {
echo...
}


Dan

PS: vu que le "if" sera vrai automatiquement si l'expression est non nulle, la ligne
CODE
if($bien["fraisactes"])

suffit
sanddy
Merci Dan wink.gif

Mais malheureusement, ça ne marche pas car je veux que cela affiche "Prix actes en main" si le champ de saisie est modifié (différent de zéro) sans automatiquement valider le formulaire. Il faut que cela l'affiche au keyUp.

Et donc, si je mets
CODE
if($bien["fraisactes"] > 0) {
echo...
}


vu que $bien["fraisactes"] n'a pas changé dans la base de données (car on n'a pas cliqué sur "valider le formulaire"), cela n'affiche pas du tout "Prix actes en main". Cela ne l'affichera que si je valide le formulaire, or, je veux que ce soit au keyUp. Pas facile de se faire comprendre... smartass.gif
Dan
Compris !

Vu que cette valeur est modifiée par JavaScript, il te faudra donc une fonction JavaScript qui n'affiche cette ligne que si la somme GetId('prixactes').innerHTML=parseFloat(this.value) + parseFloat(GetId('prixvente').value) est supérieure à zéro.

Et le JavaScript et moi, ça fait deux q_smallexcla.gif

Il se trouvera bien quelqu'un de compétent pour te donner la solution. smile.gif
sanddy
LOL, merci wink.gif

Je suis dans le même cas... en javascript, hum, pas du tout mon domaine... donc s'il y a une aimable personne sur ce forum qui pourrait m'aider en javascript, ça me serait vraiment utile...

Merci d'avance...
iNCiTE Web
Si j'ai bien compris (car je ne sais pas si tu parles des montants et/ou des libellés) :

CODE
onkeyup=\"GetId('prixactes').innerHTML = calcul(this.value);\"


Et rajouter la fonction :
CODE
function calcul(montant) {
  var total = parseFloat(montant) + parseFloat(GetId('prixvente').value);
  if ( total > 0 )
      return total
}


Je précise que GetId n'est pas une fonction Javascript, elle a du être déclaré quelque part...
sanddy
Si, GetId est une fonction javascript, la voici :

CODE
function GetId(id) {
    return document.getElementById(id);
}
iNCiTE Web
Ce que je veux dire c'est que la fonction n'existe pas à la base, elle est déclarée dans le code à un moment.
Ce qui veut dire que tu ne peux pas faire GetId() comme ça dans un script de base...
sanddy
Du coup, j'ai fait :

CODE
<script language="Javascript" type="text/javascript">
function calcul(montant) {
  var total = parseFloat(GetId('prixactes').value) + parseFloat(GetId('prixvente').value);
  if (total > 0)
      return total
  }
</script>
echo "<b>Frais d'actes :</b><br /><input".$readonly." type=\"text\" size=\"12\" name=\"fraisactes\" id=\"fraisactes\" value=\"".$bien["fraisactes"]."\" onkeyup=\"calcul(montant)\" /> &euro;\n";

echo ": <span id=\"prixactes\">".($bien["prixnet"] + $bien["emoluments"] + $bien["fraisactes"])."</span> &euro;</i>";


Le total marche mais lorsqu'on saisit un montant dans fraisactes, ça ne fonctionne pas. Je dois avoir quelques fautes dans mon code vers le onkeyup r_question6161.gif
Merci d'avance.
iNCiTE Web
Euh si le code est tel quel c'est normal tongue.gif
Tu as mélangé le Javascript et le PHP, il faut un <? avant de commencer les ECHO

Ensuite tu as mis onkeyup=\"calcul(montant)\" mais montant n'est pas défini, il faut le retirer, de même que dans la déclaration de la fonction.
Tu as une page de test en ligne ?
sanddy
J'ai reussi wink.gif

Merci à vous.

J'ai fait :

CODE
<i id='test' style="display:none">Prix actes en main : <span id="prixactes">707879</span> &euro;</i>


et un :

CODE
onkeyup="if(parseFloat(this.value) > 0){GetId('test').style.display='block';GetId('prixactes').innerHTML=parseFloat(this.value) + parseFloat(GetId('prixvente').value);}else{GetId('test').style.display='none';}"


sur ma méthode smile.gif a_thumbsup_20.gif
iNCiTE Web
OK. Cependant le <i id='test' c'est bof, un <span id='test' serait plus approprié...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.