Set the default country

Options
Hi,


Is there a way to set the default country for various parts such as Event registration and Donations?


Thanks,

Kerry
Tagged:

Comments

  • I'd also love to hear any suggestions on this, particularly if there's a way to set the default country for one part differently than another. 
  • I set this up on our site, I'll share the script tomorrow when I'm back in the office.


    -Chris
  • Two options:


    1. You set the desired country as first position in the code table in Raiser's Edge.  It would then reflect in first position on your BBNC forms.


    2. You can have js within an unformatted text part on any form page that will set the default country. 
  • Thanks Chris that would be awesome.


    Julie, we thought about moving the RE entry however it is far from ideal, js was my next attempt and sounds like Chris already has it!


    The 3rd option would be ideal for customers going forward and that is for BB to build the functionality into NC :)


     
  • Chris Kastner
    Chris Kastner Blackbaud Employee
    Ancient Membership Facilitator 1 Name Dropper Photogenic
    There is already system functionality to set this for the whole site - but needs to be done directly on the server in the web.config file.


    Essentially you just need to add the <add key="DefaultCountry" value="New Zealand"/> value to that file under <appSettings> and restart the application pool.  Once done, all your forms should load with the correct default country.


    Whilst javascript is one option, it does force the form to refresh to re-load the new address fields from the server so it's not an ideal way to go about it.  YOu also need to code in the fact that a user may have address details pre-populated and you don't want to reset the address back to the default each time they try to update addresses.  Much better off approaching it with an actual system setting given there is one.


    You can find more specific instructions on this in the following KB article: https://kb.blackbaud.com/articles/Article/42504
  • Right but that doesn't solve the problem of needing defaults to be different for different forms. Same goes for changing the code table in RE.
  • Awesome Chris, thanks for that.


    Would be interesting to know what other entries are available to use.


     
  • Chris Kastner
    Chris Kastner Blackbaud Employee
    Ancient Membership Facilitator 1 Name Dropper Photogenic
    I've just chucked this together which should address what you're trying to achieve.  I haven't tested it with the newer event registration form but seems to work with donations at least.  Just chuck this in an unformatted text page on your donation and event pages (or templates).


    Basically, it checks to make sure you're not logged in (or your address is likely pre-populated), then it looks to find the country dropdown if it isn't matched to your default setting, and lastly makes sure that it doesn't run multiple times on the one form to stop it resetting back to a value if user has manually changed it to a different country.


    May need to check how this would work with email links auto-filling forms, and possibly add in something that stops it running if the address lines are populated.

     


    <script type="text/javascript">

        var defaultCountry = "New Zealand"; //replace this with preferred country value

        var firstChange = true; //ensures this won't re-run on subsequent postbacks


        Sys.Application.add_load(function(){

            if ( LOGGEDIN == "" && $('select[name$="dd_Country"]').first().val().toLowerCase() !== defaultCountry.toLowerCase() && firstChange) {

                $('div[id$="_UpdatePanel"]').hide(); //hide the form to stop people entering while the form is reloading

                $('select[name$="dd_Country"] option').filter(function(){

                    return $(this).val().toLowerCase() == defaultCountry.toLowerCase();

                }).attr('selected',true).parent().trigger('change'); //find the default country option, select it, and trigger the onchange function of the select list.

            } else {

                $('div[id$="_UpdatePanel"]').show(); //show the form

            }

            if ($('select[name$="dd_Country"]').length) { 

                firstChange = false;

            }

        });

    </script>




     
  • Nicely done Chris! I wont bother posting my solution as this does about the same thing. I handle postbacks a little differently but this should work.


    CM
  • Chris Kastner:

    I've just chucked this together which should address what you're trying to achieve.  I haven't tested it with the newer event registration form but seems to work with donations at least.  Just chuck this in an unformatted text page on your donation and event pages (or templates).


    Basically, it checks to make sure you're not logged in (or your address is likely pre-populated), then it looks to find the country dropdown if it isn't matched to your default setting, and lastly makes sure that it doesn't run multiple times on the one form to stop it resetting back to a value if user has manually changed it to a different country.


    May need to check how this would work with email links auto-filling forms, and possibly add in something that stops it running if the address lines are populated.

     



    <script type="text/javascript">

        var defaultCountry = "New Zealand"; //replace this with preferred country value

        var firstChange = true; //ensures this won't re-run on subsequent postbacks


        Sys.Application.add_load(function(){

            if ( LOGGEDIN == "" && $('select[name$="dd_Country"]').first().val().toLowerCase() !== defaultCountry.toLowerCase() && firstChange) {

                $('div[id$="_UpdatePanel"]').hide(); //hide the form to stop people entering while the form is reloading

                $('select[name$="dd_Country"] option').filter(function(){

                    return $(this).val().toLowerCase() == defaultCountry.toLowerCase();

                }).attr('selected',true).parent().trigger('change'); //find the default country option, select it, and trigger the onchange function of the select list.

            } else {

                $('div[id$="_UpdatePanel"]').show(); //show the form

            }

            if ($('select[name$="dd_Country"]').length) { 

                firstChange = false;

            }

        });

    </script>




     

     

    Hi Chris


    That looks awesome, but how do you get it into the form


    Cheers

Categories