Maybe it's my programming error, or maybe not, but either way i could use some help.
I have an app: http://www.toolwebshop.com/_calorie_tracker/website/mynumber.php that updates multiple elements using the jquery UI slider. The function is nested within the slider with this code (works btw): <code> <script type="text/javascript"> /* <![CDATA[ */ $(document).ready(function() { $("#slider").slider({ value: <?php if($_POST['lose']) { echo $_POST['lose']; } else { echo "0"; }; ?>, min: -15, max: 15, step: .25, slide: function calculate(event, ui){ profile = new Object(); profile.n = $("#name").val(); profile.w = $("#weight").val(); profile.h = $("#height").val(); profile.a = $("#age").val(); profile.s = $("#sex").val(); profile.m = $("#activity").val(); $("#lose").val(ui.value); if( profile.s == "M" ) { profile.bmr = (66 + (6.23 * (profile.w - ui.value)) + (12.7 * profile.h) - (6.8 * profile.a)) * profile.m; } if( profile.s == "F" ) { profile.bmr = (655 + (4.35 * (profile.w - ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; } if( profile.s == "P" ) { profile.bmr = (1155 + (4.35 * (profile.w - ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; } $("#bmr").val(Math.round(profile.bmr)); $(".calper").each(function(){ calper = parseInt($(this).children(".percent").text())/100; $(this).children(".number").text(Math.round(profile.bmr * calper)); }); if( ui.value < -10 && $(".warning:hidden")){ $(".warning").fadeIn("slow"); } if( ui.value > -10 && $(".warning:visible")){ $(".warning").fadeOut("slow"); } if( ui.value == 0 ) { $(".lose label").text("Maintain Weight:"); } if( ui.value < 0 ) { $(".lose label").text("Lose LBS:"); } if( ui.value > 0 ) { $(".lose label").text("Gain LBS:"); } } }); }); /* ]]> */ </script> </code> However, when i try to remove the function to make it accessible outside of the slider() the callback does not fire on mouse event: <code> function calculate(event, ui){ profile = new Object(); profile.n = $("#name").val(); profile.w = $("#weight").val(); profile.h = $("#height").val(); profile.a = $("#age").val(); profile.s = $("#sex").val(); profile.m = $("#activity").val(); $("#lose").val(ui.value); if( profile.s == "M" ) { profile.bmr = (66 + (6.23 * (profile.w - ui.value)) + (12.7 * profile.h) - (6.8 * profile.a)) * profile.m; } if( profile.s == "F" ) { profile.bmr = (655 + (4.35 * (profile.w - ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; } if( profile.s == "P" ) { profile.bmr = (1155 + (4.35 * (profile.w - ui.value)) + (4.7 * profile.h) - (4.7 * profile.a)) * profile.m; } $("#bmr").val(Math.round(profile.bmr)); $(".calper").each(function(){ calper = parseInt($(this).children(".percent").text())/100; $(this).children(".number").text(Math.round(profile.bmr * calper)); }); if( ui.value < -10 && $(".warning:hidden")){ $(".warning").fadeIn("slow"); } if( ui.value > -10 && $(".warning:visible")){ $(".warning").fadeOut("slow"); } if( ui.value == 0 ) { $(".lose label").text("Maintain Weight:"); } if( ui.value < 0 ) { $(".lose label").text("Lose LBS:"); } if( ui.value > 0 ) { $(".lose label").text("Gain LBS:"); } } $("#slider").slider({ value: <?php if($_POST['lose']) { echo $_POST['lose']; } else { echo "0"; }; ?>, min: -15, max: 15, step: .25, slide: calculate(event, ui) }); </code> I did a test with a basic function giving an alert, and when the page would first load the function would be called, however, after i started moving the slider, it wouldn't fire. Any ideas? Any other suggestions to clean up my code? THANKS! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery UI" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jquery-ui?hl=en -~----------~----~----~----~------~----~------~--~---
