Geekzone: technology news, blogs, forums
Guest
Welcome Guest.
You haven't logged in yet. If you don't have an account you can register now.




302 posts

Ultimate Geek


#193455 11-Mar-2016 16:31
Send private message

So I have an ajax script for cascading drop down forms.

 

At the moment it's called when the "master" drop down is changed or focused, using the jquery on() function. When the user selects an item from the master dropdown, the ajax script is called to load a php script that checks the sql DB for all the "children" of that master, which then populates the child drop down list.

 

 

 

$("select#master").on("change focus", function(){
var master = $("select#master option:selected").attr('value');
if (master.length > 0 ){

$.post("inc/fetchChild.php",
{
id: master
},
function(data){
$("#child").html( data );
});

};
});

 

 

 

This works all well and good - no dramas. 

 

The problem is I want this script to fire on page load. This is because the form data at the next page is saved as session variables, so the user can go back and forth between the form stages and each form element checks to see if there is a associated session variable, and if there is, loads it up. 

 

Im doing this because the form is very long and broken into 5 sections - so I dont want the customer losing their form data if they go back and forth.

 

 

 

So, I need this above script to fire on page load because if the user has already selected the child and master previous - then php loads the "master" drop down with the user selection already loaded and selected. This once the page has finished loading, the ajax script needs to fire - sees that the master is already loaded, and subsequently loads the children for that master.

 

 

 

So going back to the main problem. If I insert "ready" into the ".on("change focus", function()" function ..... .on("change focus ready", ... it doesn't work.

 

 

 

However If I copy and past the above functions contents into the root $(document).ready(function(){ function, it works fine! Like this:

 

 

 

$(document).ready(function(){


var master = $("select#master option:selected").attr('value');
if (master.length > 0 ){

$.post("inc/fetchChild.php",
{
id: master
},
function(data){
$("#child").html( data );
});

};


$("select#master").on("change focus", function(){
var master = $("select#master option:selected").attr('value');
if (master.length > 0 ){

..........................etc...

 

 

 

 

 

Problem is now I have pretty much a duplicate function, which isn't very efficient and a but ugly.

 

I hope I'm explaining myself clear enough...

 

Can I reconfigure this on function to fire on page load as well as when the user clicks on the master list?

 

 

 

 

 

 


Filter this topic showing only the reply marked as answer Create new topic
558 posts

Ultimate Geek

Subscriber

  #1511472 11-Mar-2016 16:37
Send private message

You would put everything in the function into its own function

 

So like follows

 

function reload_list(){

 

var master = $("select#master option:selected").attr('value');
if (master.length > 0 ){

$.post("inc/fetchChild.php",
{
id: master
},
function(data){
$("#child").html( data );
});

 

}

 

$("select#master").on("change focus", function(){

 

reload_list();

 

});

 

$(document).ready(function(){

 

reload_list();

 

});





Geoff E




302 posts

Ultimate Geek


  #1512714 14-Mar-2016 08:48
Send private message

ahh of course. cheers!


Filter this topic showing only the reply marked as answer Create new topic





Twitter and LinkedIn »



Follow us to receive Twitter updates when new discussions are posted in our forums:



Follow us to receive Twitter updates when news items and blogs are posted in our frontpage:



Follow us to receive Twitter updates when tech item prices are listed in our price comparison site:





News »

Chorus completes the build and commissioning of two new core Ethernet switches
Posted 8-Jul-2020 09:48


National Institute for Health Innovation develops treatment app for gambling
Posted 6-Jul-2020 16:25


Nokia 2.3 to be available in New Zealand
Posted 6-Jul-2020 12:30


Menulog change colours as parent company merges with Dutch food delivery service
Posted 2-Jul-2020 07:53


Techweek2020 goes digital to make it easier for Kiwis to connect and learn
Posted 2-Jul-2020 07:48


Catalyst Cloud launches new Solutions Hub to support their kiwi Partners and Customers
Posted 2-Jul-2020 07:44


Microsoft to help New Zealand job seekers acquire new digital skills needed for the COVID-19 economy
Posted 2-Jul-2020 07:41


Hewlett Packard Enterprise introduces new HPE GreenLake cloud services
Posted 24-Jun-2020 08:07


New cloud data protection services from Hewlett Packard Enterprise
Posted 24-Jun-2020 07:58


Hewlett Packard Enterprise unveils HPE Ezmeral, new software portfolio and brand
Posted 24-Jun-2020 07:10


Apple reveals new developer technologies to foster the next generation of apps
Posted 23-Jun-2020 15:30


Poly introduces solutions for Microsoft Teams Rooms
Posted 23-Jun-2020 15:14


Lenovo launches new ThinkPad P Series mobile workstations
Posted 23-Jun-2020 09:17


Lenovo brings Linux certification to ThinkPad and ThinkStation Workstation portfolio
Posted 23-Jun-2020 08:56


Apple introduces new features for iPhone iOS14 and iPadOS 14
Posted 23-Jun-2020 08:28



Geekzone Live »

Try automatic live updates from Geekzone directly in your browser, without refreshing the page, with Geekzone Live now.


Support Geekzone »

Our community of supporters help make Geekzone possible. Click the button below to join them.

Support Geezone on PressPatron



Are you subscribed to our RSS feed? You can download the latest headlines and summaries from our stories directly to your computer or smartphone by using a feed reader.

Alternatively, you can receive a daily email with Geekzone updates.