J'ai une fonction qui utilise 3 entrées. Malheureusement, lorsque je remplis les 3 entrées. Le résultat apparaît pendant 1 seconde et disparaît ... Mais quand je remplis seulement 2 des 3 entrées. Le résultat apparaîtra, mais il manque bien sûr une partie de l'entrée.
<!DOCTYPE html> <html> <head lang="en"> <h1> BMI Calculator</h1> <meta charset="UTF-8"> <script src="js/jquery-3.3.1.js"></script> <script src="js/script.js"></script> </head> <body> <form> <label><b>Lengte</b></label> <input type="number" name="message" id="user_lengte" required><span>cm</span><br> <label><b>Gewicht</b></label> <input type="number" name="message" id="user_gewicht" required><span>kg</span><br> <label><b>Leeftijd</b></label> <input type="number" name="message" id="user_leeftijd" required><span>jr</span><br> <button type="submit" onclick="showBMI();" value="Calculate">Berekenen</button><br/> <label> </label><br> <label>Your BMI: </label> <p><span id='display'></span></p> </form> </body> </html> function showBMI() { var gewicht = document.getElementById("user_gewicht").value; var lengte = document.getElementById("user_lengte").value; var leeftijd = document.getElementById("user_leeftijd").value; document.getElementById('display').innerHTML = (88.362 + (13.397 * gewicht) + (4.799 * lengte) - (5.677 * leeftijd)).toFixed(2) //88.362 + ( 13.397 x weight in kg ) + ( 4.799 x height in cm ) - ( 5.677 x age in years ) };
Je voudrais pouvoir remplir les 3 entrées et les afficher.
4 Réponses :
Puisque vous avez un type de bouton comme soumettre, le comportement par défaut de celui-ci est de soumettre le formulaire et de forcer l'actualisation de la page, que vous pouvez désactiver en passant l'événement à la méthode showBMI
et en utilisant event.preventDefault ();
<!DOCTYPE html> <html> <head lang="en"> <h1> BMI Calculator</h1> <meta charset="UTF-8"> <script src="js/jquery-3.3.1.js"></script> <script src="js/script.js"></script> </head> <body> <form> <label><b>Lengte</b></label> <input type="number" name="message" id="user_lengte" required><span>cm</span><br> <label><b>Gewicht</b></label> <input type="number" name="message" id="user_gewicht" required><span>kg</span><br> <label><b>Leeftijd</b></label> <input type="number" name="message" id="user_leeftijd" required><span>jr</span><br> <button type="submit" onclick="showBMI(event);" value="Calculate">Berekenen</button><br/> <label> </label><br> <label>Your BMI: </label> <p><span id='display'></span></p> </form> </body> </html>
function showBMI(e) { e.preventDefault(); var gewicht = document.getElementById("user_gewicht").value; var lengte = document.getElementById("user_lengte").value; var leeftijd = document.getElementById("user_leeftijd").value; document.getElementById('display').innerHTML = (88.362 + (13.397 * gewicht) + (4.799 * lengte) - (5.677 * leeftijd)).toFixed(2) //88.362 + ( 13.397 x weight in kg ) + ( 4.799 x height in cm ) - ( 5.677 x age in years ) };
Merci Monsieur! Je venais de trouver un travail, mais c'est beaucoup mieux!
Changer le type de bouton en "bouton"
<button type="button" onclick="showBMI();" value="Calculate">Berekenen</button><br/>
Seriez-vous si gentil d'expliquer la différence? Que ferait type = "button" au lieu de "soumettre"?
Lorsque vous cliquez sur type = "soumettre", cela déclenchera l'envoi du formulaire. Pour éviter cela, vous pouvez utiliser type = "button".
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <html> <head lang="en"> <h1> BMI Calculator</h1> <meta charset="UTF-8"> </head> <body> <form> <label><b>Lengte</b></label> <input type="number" name="message" id="user_lengte" required><span>cm</span><br> <label><b>Gewicht</b></label> <input type="number" name="message" id="user_gewicht" required><span>kg</span><br> <label><b>Leeftijd</b></label> <input type="number" name="message" id="user_leeftijd" required><span>jr</span><br> <button id="showBMI" value="Calculate">Berekenen</button><br/> <label> </label><br> <label>Your BMI: </label> <p><span id='display'></span></p> </form> </body> </html>
function showBMI() { var gewicht = document.getElementById("user_gewicht").value; var lengte = document.getElementById("user_lengte").value; var leeftijd = document.getElementById("user_leeftijd").value; document.getElementById('display').innerHTML = (88.362 + (13.397 * gewicht) + (4.799 * lengte) - (5.677 * leeftijd)).toFixed(2) //88.362 + ( 13.397 x weight in kg ) + ( 4.799 x height in cm ) - ( 5.677 x age in years ) }; $(document).on('click', '#showBMI', function (e) { showBMI(); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <html> <head lang="en"> <h1> BMI Calculator</h1> <meta charset="UTF-8"> </head> <body> <form> <label><b>Lengte</b></label> <input type="number" name="message" id="user_lengte" required><span>cm</span><br> <label><b>Gewicht</b></label> <input type="number" name="message" id="user_gewicht" required><span>kg</span><br> <label><b>Leeftijd</b></label> <input type="number" name="message" id="user_leeftijd" required><span>jr</span><br> <button id="showBMI" value="Calculate">Berekenen</button><br/> <label> </label><br> <label>Your BMI: </label> <p><span id='display'></span></p> </form> </body> </html>
function showBMI() { var gewicht = document.getElementById("user_gewicht").value; var lengte = document.getElementById("user_lengte").value; var leeftijd = document.getElementById("user_leeftijd").value; document.getElementById('display').innerHTML = (88.362 + (13.397 * gewicht) + (4.799 * lengte) - (5.677 * leeftijd)).toFixed(2) //88.362 + ( 13.397 x weight in kg ) + ( 4.799 x height in cm ) - ( 5.677 x age in years ) }; $(document).on('click', '#showBMI', function (e) { showBMI(); });
Pouvez-vous expliquer ce que cela change? Je vois des changements mais je ne sais pas quels sont les effets secondaires?
Vous devez ajouter l'événement onsubmit à la balise de formulaire
<form onsubmit="showBMI(); return false">
Ensuite, il sera bon de supprimer l'événement onclick du bouton d'envoi et d'appeler la méthode showBMI () pour l'événement onsubmit comme ceci: p>
<form onsubmit="return false">
Je vous remercie! Je vais essayer ça!