Found the solution, when firing a callback function, you have to call
the function from an new function like so:
$("#slider").slider({
value: 5,
min: -15,
max: 15,
step: .25,
slide: function() { calculate(event, ui) }
});
To me this is absolutely retarted, and i think the UI team may want to
look into this.
On Sep 15, 9:45 am, Clay <[email protected]> wrote:
> 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
-~----------~----~----~----~------~----~------~--~---