I'm having an issue with jQuery UI not firing my callback function when it's not nested. This is my code which works (view on http://www.toolwebshop.com/_calorie_tracker/website/)
However, i'd like to call that calculate function outside of the slider, without having duplicates. Here's what I would think should work, but isnt:HTML 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>
What am i doing wrong? All i did was remove the function from within the slider().HTML 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) });


Reply With Quote

Bookmarks