I am afraid we don't have a standard method that can be used. However you can check the code in PhoneCall module - it uses similar method: after selecting a contact it updates phone number field, which is populated from all phone numbers entered for th contact - home, work, cell etc.
The code that does it is as follows:
public static function QFfield_other_phone(&$form, $field, $label, $mode, $default, $desc) {
if ($mode=='add' || $mode=='edit') {
$js =
'Event.observe(\'other_phone\',\'change\', onchange_other_phone);'.
'function enable_disable_phone(arg) {'.
'phone = document.forms[\''.$form->getAttribute('name').'\'].phone;'.
'o_phone = document.forms[\''.$form->getAttribute('name').'\'].other_phone_number;'.
'if (arg) {phone.disabled=true;o_phone.disabled=false;} else {if(phone.length!=0)phone.disabled=false;o_phone.disabled=true;}'.
'};'.
'function onchange_other_phone() {'.
'c_phone = document.forms[\''.$form->getAttribute('name').'\'].other_phone;'.
'enable_disable_phone(c_phone.checked);'.
'};'.
'c_phone = document.forms[\''.$form->getAttribute('name').'\'].other_phone;'.
'enable_disable_phone('.($default?'1':'0').' || c_phone.checked);';
eval_js($js);
$form->addElement('checkbox', $field, $label, null, array('id'=>$field));
if ($mode=='edit') $form->setDefaults(array($field=>$default));
} else {
$form->addElement('checkbox', $field, $label);
$form->setDefaults(array($field=>$default));//self::display_phone(array($desc['id']=>$default), null, false, $desc)));
}
}
and update_phones.php is responsible for returning these numbers via JSON.
Maybe you can adapt it to your needs.