Whatevo
Whatevo

Reputation: 280

Change page on select change

I'm using jQuery Mobile and trying to figure out how to change a page correctly using a select drop-down and some jQuery. The problem I'm having is the page loads with the content, but if I keep switching the selected value, the page loads multiple times. I'm assuming it's because the page contents from the last selection still exist in the DOM? Here's what I have so far:

jQuery:

$(document).ready(function() {
    $("select[name=ProjectID]").change(function() {
        var projectID = $(this).val();
        window.location.hash = "/tasks.cfm?pid=" + projectID;
    });
});

HTML:

<select name="ProjectID">
    <option value="1">Project 1</option>
    <option value="2">Project 2</option>
</select>

Tried using $.mobile.changePage(), but saw the same result. Any way to get around this?

Upvotes: 1

Views: 4947

Answers (1)

Phill Pafford
Phill Pafford

Reputation: 85308

I would go about it like this:

JS

$('.navigateToPage').change(function() {
    var page = $(this).val();
    $.mobile.changePage( "#"+page, { transition: "slideup"} );
});

HTML

<div data-role="page" id="home">
    <div data-role="content">        
        <label for="pages" class="select">Navigate to page:</label>
        <select name="pages" id="selectPages" class="navigateToPage">
           <option>Select a Page</option>
           <option value="page2">Page 2</option>
           <option value="page3">Page 3</option>
           <option value="page4">Page 4</option>
           <option value="page5">Page 5</option>
        </select>
        <br />
        <span>This is the Home Page</span>     
    </div>
</div>

<div data-role="page" id="page2">
    <div data-role="content">        
        <label for="pages2" class="select">Navigate to page:</label>
        <select name="pages2" id="selectPages2" class="navigateToPage">
           <option>Select a Page</option>
           <option value="home">Home Page</option>
           <option value="page3">Page 3</option>
           <option value="page4">Page 4</option>
           <option value="page5">Page 5</option>
        </select>
        <br />
        <span>This is Page 2</span>  
    </div>
</div>

<div data-role="page" id="page3">
    <div data-role="content">        
        <label for="pages3" class="select">Navigate to page:</label>
        <select name="pages3" id="selectPages3" class="navigateToPage">
           <option>Select a Page</option>
           <option value="home">Home Page</option>
           <option value="page2">Page 2</option>           
           <option value="page4">Page 4</option>
           <option value="page5">Page 5</option>
        </select>
        <br />
        <span>This is Page 3</span>     
    </div>
</div>

<div data-role="page" id="page4">
    <div data-role="content">        
        <label for="pages4" class="select">Navigate to page:</label>
        <select name="pages4" id="selectPages4" class="navigateToPage">
           <option>Select a Page</option>
           <option value="home">Home Page</option>
           <option value="page2">Page 2</option>           
           <option value="page3">Page 3</option>
           <option value="page5">Page 5</option>
        </select>
        <br />
        <span>This is Page 4</span>     
    </div>
</div>

<div data-role="page" id="page5">
    <div data-role="content">        
        <label for="pages5" class="select">Navigate to page:</label>
        <select name="pages5" id="selectPages5" class="navigateToPage">
           <option>Select a Page</option>
           <option value="home">Home Page</option>
           <option value="page2">Page 2</option>           
           <option value="page3">Page 3</option>
           <option value="page4">Page 4</option>
        </select>
        <br />
        <span>This is Page 5</span>     
    </div>
</div>

Upvotes: 4

Related Questions