jQuery( function( $ ) { // wc_country_select_params is required to continue, ensure the object exists if ( typeof wc_country_select_params === 'undefined' ) { return false; } /* State/Country select boxes */ var states_json = wc_country_select_params.countries.replace( /"/g, '"' ), states = $.parseJSON( states_json ); $( 'select.country_to_state, input.country_to_state' ).change( function() { var country = $( this ).val(), $statebox = $( this ).closest( 'div' ).find( '#billing_state, #shipping_state, #calc_shipping_state' ), $parent = $statebox.parent(), input_name = $statebox.attr( 'name' ), input_id = $statebox.attr( 'id' ), value = $statebox.val(), placeholder = $statebox.attr( 'placeholder' ); if ( states[ country ] ) { if ( $.isEmptyObject( states[ country ] ) ) { $statebox.parent().hide().find( '.chosen-container' ).remove(); $statebox.replaceWith( '' ); $( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] ); } else { var options = '', state = states[ country ]; for( var index in state ) { if ( state.hasOwnProperty( index ) ) { options = options + ''; } } $statebox.parent().show(); if ( $statebox.is( 'input' ) ) { // Change for select $statebox.replaceWith( '' ); $statebox = $( this ).closest( 'div' ).find( '#billing_state, #shipping_state, #calc_shipping_state' ); } $statebox.html( '' + options ); $statebox.val( value ); $( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] ); } } else { if ( $statebox.is( 'select' ) ) { $parent.show().find( '.chosen-container' ).remove(); $statebox.replaceWith( '' ); $( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] ); } else if ( $statebox.is( '.hidden' ) ) { $parent.show().find( '.chosen-container' ).remove(); $statebox.replaceWith( '' ); $( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] ); } } $( 'body' ).trigger( 'country_to_state_changing', [country, $( this ).closest( 'div' )] ); }); $(function() { $( 'select.country_to_state, input.country_to_state' ).change(); }); });