Sha256: 2a22cf323b2f54cab68a85e35b6e3b9243da64b8e3254d8870ee3ade31cbd227

Contents?: true

Size: 1.74 KB

Versions: 2

Compression:

Stored size: 1.74 KB

Contents

loadSubregions = ($countrySelect, clearPostalCode = false) ->
  $.each $countrySelect, (index, countrySelector) ->
    $particularCountrySelect = $(countrySelector)
    countryCode = $particularCountrySelect.val()
    uuid = $particularCountrySelect.data('effective-address-country')

    $nestedFields = $particularCountrySelect.closest('.nested-fields')
    $form = $particularCountrySelect.closest('form')

    $container = if $nestedFields.length == 0 then $form else $nestedFields

    # clear postal_code values on country change if it is turned on
    $container.find("input[data-effective-address-postal-code='#{uuid}']").val('') if clearPostalCode

    # load state options
    url = "/addresses/subregions/#{countryCode}"
    $stateSelect = $container.find("select[data-effective-address-state='#{uuid}']:first")

    if countryCode.length == 0
      $stateSelect.prop('disabled', true).addClass('disabled').parent('.form-group').addClass('disabled')
      $stateSelect.html('<option value="">Please choose a country first</option>')
    else
      $stateSelect.removeAttr('disabled').removeClass('disabled').parent('.form-group').removeClass('disabled')
      $stateSelect.find('option').first().text('loading...')
      $stateSelect.load url, ->
        stateSelectAvailable = $(@).find('option:last').val().length > 0
        if stateSelectAvailable
          $(@).prop('required', true)
          $(@).removeAttr('disabled')
        else
          $(@).removeAttr('required')
          $(@).prop('disabled', true)

$(document).on 'change', 'select[data-effective-address-country]', -> loadSubregions($(@), true)

$ -> loadSubregions($('select[data-effective-address-country]'))
$(document).on 'page:change', -> loadSubregions($('select[data-effective-address-country]'))

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
effective_addresses-1.3.7 app/assets/javascripts/effective_addresses/address_fields.js.coffee
effective_addresses-1.3.6 app/assets/javascripts/effective_addresses/address_fields.js.coffee