Search code examples
jqueryselectdropdown

Display data from array corresponding to option in a dropdown


I am trying to display data from an array. I get the countries from this array but I need to display data after selecting from the drop down option.

I need to put the 'making_calls' value in .price-call p and 'sending_texts' in .price-text p.

Here's the code

        array =[
          {
            "name": "Afghanistan",
            "dial_code": "+93",
            "code": "AF",
            "making_calls": "€0.30",
            "sending_texts": "€0.10",
            "call_setup": "€0.15"
        },
        {
            "name": "Albania",
            "dial_code": "+355",
            "code": "AL",
            "making_calls": "€0.6",
            "sending_texts": "€0.10",
            "call_setup": "€0.15"
        },
        {
            "name": "Algeria",
            "dial_code": "+213",
            "code": "DZ",
            "making_calls": "€1.20",
            "sending_texts": "€0.10",
            "call_setup": "€0.15"
        }
        ];
        
        $.each(array, function (i, p) {
          $('#selectCountry').append($('<option></option>').val(p.code).html(p.name + ' ' +  '(' + p.dial_code+  ')'  ));
        });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="" id="selectCountry">
   <option selected disabled>Country</option>
</select>

<div class="calls">
  <p>Making Calls</p>
  <p class="price-call">0.30$</p>
</div>
<div class="texts">
  <p>Sending Texts</p>
  <p class="price-text">0.15$</p>
</div>


Solution

  • Use if condition inside the dropdown change and compare your country code and find the desire result.

    array = [{
        "name": "Afghanistan",
        "dial_code": "+93",
        "code": "AF",
        "making_calls": "€0.30",
        "sending_texts": "€0.10",
        "call_setup": "€0.15"
      },
      {
        "name": "Albania",
        "dial_code": "+355",
        "code": "AL",
        "making_calls": "€0.6",
        "sending_texts": "€0.10",
        "call_setup": "€0.15"
      },
      {
        "name": "Algeria",
        "dial_code": "+213",
        "code": "DZ",
        "making_calls": "€1.20",
        "sending_texts": "€0.10",
        "call_setup": "€0.15"
      }
    ];
    
    $.each(array, function(i, p) {
      $('#selectCountry').append($('<option></option>').val(p.code).html(p.name + ' ' + '(' + p.dial_code + ')'));
    });
    
    $('#selectCountry').on('change', function() {
      var country = $(this).val();
      $.each(array, function(i, p) {
        if (p.code == country) {
          $('.price-call').html(p.making_calls);
          $('.price-text').html(p.sending_texts);
            return false; // break if match
        }
    
      });
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <select name="" id="selectCountry">
      <option selected disabled>Country</option>
    </select>
    
    <div class="calls">
      <p>Making Calls</p>
      <p class="price-call">0.30$</p>
    </div>
    <div class="texts">
      <p>Sending Texts</p>
      <p class="price-text">0.15$</p>
    </div>