When altering the submit button, the form does not work We need a &lt;button&gt; instead of an input in our search-form. So I changed the markup accordingly using theme_form_alter:

function giga_form_alter(&amp;$form, &amp;$form_state, $form_id) {
  if ($form_id == 'search_block_form') {
    $form['search_block_form']['#title'] = t('Search'); // Change the text on the label element
    $form['search_block_form']['#title_display'] = 'invisible'; // Toggle label visibilty
    $form['search_block_form']['#size'] = 40;  // define size of the textfield
    $form['search_block_form']['#default_value'] = t('Search'); // Set a default value for the textfield
    $form['actions']['submit'] = array(
      '#type'   =&gt; 'markup',
      '#prefix' =&gt; '&lt;button type="submit" class="btn btn-primary"&gt;',
      '#suffix' =&gt; '&lt;/button&gt;',
      '#markup' =&gt; '&lt;i class="icon-search icon-white"&gt;&lt;/i&gt;'
    );
    $form['actions']['submit']['#executes_submit_callback'] = true;
    $form['actions']['#type'] = 'none';
    $form['#attributes']['class'][] = 'search-quick';

    // Alternative (HTML5) placeholder attribute instead of using the javascript
    $form['search_block_form']['#attributes']['placeholder'] = t('Search');
  }
}


However, I can submit the form, but the search won't be processed. The page reloads and I'm not redirect to the search results. However when I remove $form['actions']['submit'] = array([…]); it all works fine. 

I'm not quite sure what's going on here.
I just had the same problem. All the needed was adding this.

$form['actions']['submit'] = array(
  '#type'  =&gt; 'submit',
);