I'm experimenting with JavaScript and Drupal forms. Currently I'm trying to make a button in the administration form of a module that will use JavaScript to append options to a select list. The problem I'm running into is that when I click the button, my JavaScript gets called but the whole form refresh. I've looked at the Forms API reference thinking there was some kind of attribute I can set on the button to stop it from but found nothing. Is there any way I can stop the button from refreshing the page or is this a dead end?

    $form['#attached']['js'] = array(
      drupal_get_path('module', 'test').'/js/test.js',
    );
    
    $form['list'] = array(
      '#type' => 'select',
      '#options' => array(),
      '#attributes' => array(
        'name' => 'sellist',
      ),
      '#size' => 4,
    );
    
    $form['add_button'] = array(
      '#type' => 'button',
      '#value' => 'Add',
      '#attributes' => array(
        'onclick' => "add_to_list(this.form.sellist, 'Append' + this.form.sellist.length);",
      ),
    );
    
    //JavaScript
    function add_to_list(list, text) {
      try {
        list.add(new Option(text, list.length), null) //add new option to end of "sample"
      }
      catch(e) {
        list.add(new Option(text, list.length));
      }
    }


My final code:

    <?php
    function jstest_menu() {
      $items['admin/config/content/jstest'] = array(
        'title' => 'JavaScript Test',
    	  'description' => 'Configuration for Administration Test',
    	  'page callback' => 'drupal_get_form',
    	  'page arguments' => array('_jstest_form'),
    	  'access arguments' => array('access administration pages'),
    	  'type' => MENU_NORMAL_ITEM,
      );
    
      return $items;
    }
    
    function _jstest_form($form, &$form_state) {
      $form['list'] = array(
        '#type' => 'select',
        '#options' => array(),
        '#size' => 4,
      );
    
      $form['add_button'] = array (
        '#type' => 'button',
        '#value' => t("Add"),
        '#after_build' => array('_jstest_after_build'),
      );
      return $form;
    }
    
    function _jstest_after_build($form, &$form_state) {
      drupal_add_js(drupal_get_path('module', 'jstest').'/js/jstest.js');
      return $form;
    }

    JavaScript
    (function ($) {
      Drupal.behaviors.snmpModule = {
        attach: function (context, settings) {
          $('#edit-add-button', context).click(function () {
            var list = document.getElementById('edit-list');
            var text = document.getElementById('edit-text');
            
            if (text.value != '')
            {
              try {
                list.add(new Option(text.value, list.length), null);
              }
              catch(e) {
                list.add(new Option(text.value, list.length));
              }
              
              text.value = '';
            }
            
            return false;
          });
          $('#edit-list', context).click(function () {
            var list = document.getElementById('edit-list');
            
            if (list.selectedIndex != -1)
              list.remove(list.selectedIndex);
            
            return false;
          });
        }
      };
    }(jQuery));