A custom Field with #submit function can't pass value
For validating the content of a field there is hook_field_validate(). As example of implementation of that hook in a module, you can look at taxonomy_field_validate(), or number_field_validate().

function number_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &amp;$errors) {
  foreach ($items as $delta =&gt; $item) {
    if ($item['value'] != '') {
      if (is_numeric($instance['settings']['min']) &amp;&amp; $item['value'] &lt; $instance['settings']['min']) {
        $errors[$field['field_name']][$langcode][$delta][] = array(
          'error' =&gt; 'number_min', 
          'message' =&gt; t('%name: the value may be no less than %min.', array('%name' =&gt; $instance['label'], '%min' =&gt; $instance['settings']['min'])),
        );
      }
      if (is_numeric($instance['settings']['max']) &amp;&amp; $item['value'] &gt; $instance['settings']['max']) {
        $errors[$field['field_name']][$langcode][$delta][] = array(
          'error' =&gt; 'number_max', 
          'message' =&gt; t('%name: the value may be no greater than %max.', array('%name' =&gt; $instance['label'], '%max' =&gt; $instance['settings']['max'])),
        );
      }
    }
  }
}


As far as I can see, fields don't add submission buttons. That is not the purpose of fields, which is to add fields to enter data for an entity (e.g. nodes, users, taxonomy terms).

In your case, the workflow is similar to the following one:


The user enters a cell phone number
The module tells to the remote service to send a verification code to that cell phone number
The user enters the verification code
The module checks the verification code is the expected one


Such workflow can work if it is done in two steps:


When the user first enters the cell phone number, the validation hook can just send the cell phone number to the remote service. It cannot wait the user receives the verification code, and enters it.  
The second time, the user edits the verification code, and the validation hook will check the verification code is the right one.


You have to see if checking the verification code can be done synchronously, or asynchronously.