I am using the International Address field which has a text field for the State/Province/Region. I can only accept the state abbreviation (two characters) so if the user selects the United States, I need to replace the text input field with a select field of US States. Using jQuery, I get the text fields name and id and then change it to a select field, using the same name and ID. The jQuery code works great but I the select value is not being saved when the form is submitted. In theory, this should work.
<?php
*
* Gravity Forms: Replace State text field with US States if Country selected is United States
*/
function country_state_list(){
if( is_page( 'request-quote' ) ) : ?>
<script>
jQuery(document).ready(function($){
// Use US States if Country selected is United States
$(".ginput_address_country select").change(function(){
var selectedCountry = $(this).children("option:selected").val();
// Get original State form field
var stateFieldID = $(this).closest('.ginput_complex').find('.ginput_address_state input, .ginput_address_state select').attr('id');
if(selectedCountry == 'US') {
$('#' + stateFieldID).replaceWith(
'<select name="'+stateFieldID+'" id="'+stateFieldID+'" aria-required="false" autocomplete="new-user-state">' +
'<option value="">Select State</option>' +
'<option value="AL">Alabama</option>' +
'<option value="AK">Alaska</option>' +
'<option value="AZ">Arizona</option>' +
'<option value="AR">Arkansas</option>' +
'<option value="CA">California</option>' +
'<option value="CO">Colorado</option>' +
'<option value="CT">Connecticut</option>' +
'<option value="DE">Delaware</option>' +
'<option value="DC">District Of Columbia</option>' +
'<option value="FL">Florida</option>' +
'<option value="GA">Georgia</option>' +
'<option value="HI">Hawaii</option>' +
'<option value="ID">Idaho</option>' +
'<option value="IL">Illinois</option>' +
'<option value="IN">Indiana</option>' +
'<option value="IA">Iowa</option>' +
'<option value="KS">Kansas</option>' +
'<option value="KY">Kentucky</option>' +
'<option value="LA">Louisiana</option>' +
'<option value="ME">Maine</option>' +
'<option value="MD">Maryland</option>' +
'<option value="MA">Massachusetts</option>' +
'<option value="MI">Michigan</option>' +
'<option value="MN">Minnesota</option>' +
'<option value="MS">Mississippi</option>' +
'<option value="MO">Missouri</option>' +
'<option value="MT">Montana</option>' +
'<option value="NE">Nebraska</option>' +
'<option value="NV">Nevada</option>' +
'<option value="NH">New Hampshire</option>' +
'<option value="NJ">New Jersey</option>' +
'<option value="NM">New Mexico</option>' +
'<option value="NY">New York</option>' +
'<option value="NC">North Carolina</option>' +
'<option value="ND">North Dakota</option>' +
'<option value="OH">Ohio</option>' +
'<option value="OK">Oklahoma</option>' +
'<option value="OR">Oregon</option>' +
'<option value="PA">Pennsylvania</option>' +
'<option value="RI">Rhode Island</option>' +
'<option value="SC">South Carolina</option>' +
'<option value="SD">South Dakota</option>' +
'<option value="TN">Tennessee</option>' +
'<option value="TX">Texas</option>' +
'<option value="UT">Utah</option>' +
'<option value="VT">Vermont</option>' +
'<option value="VA">Virginia</option>' +
'<option value="WA">Washington</option>' +
'<option value="WV">West Virginia</option>' +
'<option value="WI">Wisconsin</option>' +
'<option value="WY">Wyoming</option>' +
'</select>');
} else {
$('#' + stateFieldID).replaceWith(
'<input type="text" name="'+stateFieldID+'" id="'+stateFieldID+'" value="" aria-required="false" autocomplete="new-user-state">');
}
});
// Set Request Quote default Country to US
$('.ginput_address_country select').val('US').trigger('change');
})
</script>
<?php
endif;
}
add_action('wp_footer', 'country_state_list');
?>
I would appreciate it if I could get some insight into this issue.