I’m building an app utilizing JQuery Mobile in which I’m showing a progress bar to indicate to the user their progress based on the steps completed.
For the progress bar I’m utilizing JQuery UI which is simple to implement
<script>
$(document).ready(function(){
var currentStep = $("#formNumber").val(); //get the the current step from form
var totalSteps = 8;
var formProgress = 0;
// determine overall form progress after step is completed
if (currentStep >1) {
formProgress = (currentStep-1)/totalSteps*100;
}
// Set progress value
$("#progressbar").progressbar({value: formProgress});
$('#percentage').text(formProgress);
});// End function
</script>
However since the pages in JQuery Mobile are loaded via Ajax the progress bar does not show. I’m guessing it’s because the “#progressbar” div is empty.
if the pages loads without Ajax it will show the progress bar. Any one knows how i can solve this by allowing the progress bar to show when the page loads via Ajax
Bind to pageinit not dom ready or in this case i bind to pageshow. In a JQM ajax app dom ready only happens once on the first page. So any new content brought into the dom doesn’t get the benefit of the code you wrote. Also when the second page is brought into the dom. The first page doesn’t go anywhere its just hidden. Because of this using the same id in every page causes problems. Get used to using classes instead. If you need to pick something out of the current page use the .ui-page-active class to help you select the appropriate element.
Something like
$('.ui-page-active .formNumber')will select the correct input for you. So here is my revised first step according to the info you gave me.…… and on and so forth
If you interested I made a sample for you to look at. http://starwebservices.net/so/