3

I am trying to use a set of textboxes to define some data within my JavaScript file. So in a textbox I enter a Team name "Team name", and the javascript file uses this textbox to store the name of a team in order to print a set of tournament brackets.

The javascript file is included in my <head> so it loads before I have actually entered the data in the text boxes. I have this code for a button in the html like so:

script(type='text/javascript')
    $('#buttontest').click(function() {
        $('div.bracket').show();
        $('div.teamList').hide();
    });

So when the button is pressed, the textboxes are all hidden, and the brackets with the user-defined team names should appear....here is the code at the end of my javascript file:

$(function() {
    $('#singleElim8').bracket({
        init: singleElim8Data
    })
  $('.bracket').hide();
});

So within div.bracket I have the class #singleElim8 which the javascript uses. But how would I change it so that this javascript to initialize the brackets only runs once the button has been clicked? That way the brackets render AFTER the textboxes have been filled in. Any help appreciated.

germainelol
  • 3,231
  • 15
  • 46
  • 82
  • 1
    You can wrap it in a function and call that function inside the click event.. Or move that code inside the click event – wirey00 Dec 21 '12 at 16:31

2 Answers2

10

Just use the getScript method of jQuery

It's very easy to use

$( '#buttontest' ).on( 'click', function() {
    $.getScript( 'url to your js file', function( data, textStatus, jqxhr ) {
        // do some stuff after script is loaded
    } );
} );
bukart
  • 4,906
  • 2
  • 21
  • 40
3

When you pass a function as the parameter to jQuery it will execute that function during document.ready(). It allows your page to load all of the scripts before executing them.

$(function() {
    $('#buttontest').click(function() {
        $('div.bracket').show();
        $('div.teamList').hide();
    });

    $('#singleElim8').bracket({
        init: singleElim8Data
    })
  $('.bracket').hide();
});
Jason Whitted
  • 4,059
  • 1
  • 16
  • 16
  • This hasn't worked, I only get a blank team name where the javascript has ran before the textboxes have even been filled in – germainelol Dec 21 '12 at 16:38
  • Hard to give much more information given we cannot see the actual code that is being used. Do you have a jsfiddle that can illustrate the issue? – Jason Whitted Dec 21 '12 at 16:40