How to calculate the sum of the values of a multi value field without page reload
I was going to recommend researching the AJAX in hook_form_alter function(), but when I read that you were using Field Collections I got a little nervous.

The problem with Field Collections is they can be little finicky when you try and do more complex field "stuff" like the scenario you're proposing. I have yet to try using AJAX in combination with Field Collections and I definitely would not want to be the developer who was tasked with it.

However, if you feel like you want to tackle such a problem you are most certainly going to have create a custom module specific to your situation.

Below is the basic layout for a Node Form Alter using AJAX. Ultimately you want to add an AJAX Event function on your select list, so when the value changes it will call a function that adds the values together.

That's even before you factor in the Field Collections module, which is going to add another layer of complexity to the whole operation.

https://api.drupal.org/api/examples/ajax_example!ajax_example_node_form_alter.inc/7

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * Adds two fields to the node form, second only appears after first is enabled.
 */
function ajax_example_form_node_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  $node = $form['#node'];
  $form['ajax_example_1'] = array(
    '#type' =&gt; 'checkbox',
    '#title' =&gt; t('AJAX Example 1'),
    '#description' =&gt; t('Enable to show second field.'),
    '#default_value' =&gt; $node-&gt;ajax_example['example_1'],
    '#ajax' =&gt; array(
      'callback' =&gt; 'ajax_example_form_node_callback',
      'wrapper' =&gt; 'ajax-example-form-node',
      'effect' =&gt; 'fade',
    ),
  );
  $form['container'] = array(
    '#prefix' =&gt; '&lt;div id="ajax-example-form-node"&gt;',
    '#suffix' =&gt; '&lt;/div&gt;',
  );

  // If the state values exist and 'ajax_example_1' state value is 1 or
  // if the state values don't exist and 'example1' variable is 1 then
  // display the ajax_example_2 field.
  if (!empty($form_state['values']['ajax_example_1']) &amp;&amp; $form_state['values']['ajax_example_1'] == 1
      || empty($form_state['values']) &amp;&amp; $node-&gt;ajax_example['example_1']) {

    $form['container']['ajax_example_2'] = array(
      '#type' =&gt; 'textfield',
      '#title' =&gt; t('AJAX Example 2'),
      '#description' =&gt; t('AJAX Example 2'),
      '#default_value' =&gt; empty($form_state['values']['ajax_example_2']) ? $node-&gt;ajax_example['example_2'] : $form_state['values']['ajax_example_2'],
    );
  }
}


ajax['event']

Description: When this event occurs to this element, Drupal will perform an HTTP request in the background via Javascript.

Values: String. Possible values: Any valid jQuery event, including 'mousedown' (for submit, imagebutton, and button), 'blur' (for textfield and textarea), 'change' (for select). Note that #ajax['event'] does not need to be explicitly specified. Although it can be manually set, usually the default value will be sufficient.