In a form, I want subsequent fields depending upon previous field?
If looking for a module, you can use the D7 -dev version of conditional_fields


  Define dependencies between fields based on their states and values.
  
  Conditional Fields for Drupal 7 is an user interface to the new States
  API, plus the ability to modify fields appearance and behavior on
  certain conditions when viewing content.


Alternatively, you can tweak the forms directly in code using hook_form_alter and the States API

In this example, I show the UPC field when the specified operation value is chosen in a select box:

  // Define available batch operation callbacks
  $operations = array(
    'infinity_batch_sync_products' =&gt; 'Import and sync product details',
    'infinity_fetch_products' =&gt; 'Fetch list of available products',
    'infinity_fetch_product' =&gt; 'Fetch detail on single product'
  );

  $form['operation'] = array(
    '#type' =&gt; 'select',
    '#title' =&gt; t('Select operation'),
    '#options' =&gt; $operations,
    '#required' =&gt; TRUE,
  );
  $form['upc'] = array(
    '#type' =&gt; 'textfield',
    '#title' =&gt; t('UPC'),
    '#description' =&gt; t('Enter the product UPC code (commerce product SKU)'),
    '#default_value' =&gt; 0,
    '#size' =&gt; 20,
    '#maxlength' =&gt; 20,
    '#states' =&gt; array(
      'visible' =&gt; array(
       ':input[name="operation"]' =&gt; array('value' =&gt; 'infinity_fetch_product'),
      ),
    ),
  );


The "UPC" field only shows when the operation is "infinity_fetch_product"