【问题标题】:disabling page reload on enter key-pressed on form textfield in drupal 6.x在drupal 6.x中的表单文本字段上按回车键禁用页面重新加载
【发布时间】:2012-02-13 03:45:51
【问题描述】:

我有一个只包含一个文本字段的表单,预期的行为是当用户在文本框中按下回车键时,应该提交文本框的值,但没有重新页面(刷新)加载。 我尝试了各种设置 AHAH 的方法,但仍然无法达到预期的行为,页面重新加载。 我一直在寻找任何解决这个问题的方法,但没有运气。

请建议如何完成或指导我到有用的地方 这是代码:

function user_porfile_message_form(){
  $form = array();

  $form['element1'] = array(
    '#type' => 'textfield',
    '#title' => '',
    '#default_value' => '',
  );

    $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
    '#attributes' => array('class' => 'no-js'),
    '#ahah' => array(
      'path' => 'module/file/callback',
      'wrapper' => 'some-wrapper',
      'event' => 'click', 
    ),
  );
    return $form;
}

【问题讨论】:

    标签: drupal-6 ahah


    【解决方案1】:

    找到解决办法,这里是:

    function some_form(&$form_state){
      $form = array();
            $form['text'] = array(
                '#value' => "Text",
                '#prefix' => '<div id="some-wrapper">',
                '#suffix' => '</div>',
            );
    
        $form['text_input'] = array(
        '#type' => 'textfield',
        '#title' => '',
        '#default_value' => '',
      );
    
        $form['submit'] = array(
        '#type' => 'submit',
        '#value' => t('Save'),
            '#attributes' => array('class' => 'no-js'),
        '#ahah' => array(
          'path' => 'module/file/callback',
          'wrapper' => 'some-wrapper',
          'event' => 'click', 
        ),
      );
        return $form;
    }
    
    function some_form_submit(){
    //Do whatever has to be done for submission
    }
    
    function some_form_callback(){
        $form_state = array('storage' => NULL, 'submitted' => FALSE);
    
        $form_build_id = $_POST['form_build_id'];
      $form = form_get_cache($form_build_id, $form_state);
      $args = $form['#parameters'];
      $form_id = array_shift($args);
      $form_state['post'] = $form['#post'] = $_POST;
    
      $form['#programmed'] = $form['#redirect'] = FALSE;
      drupal_process_form($form_id, $form, $form_state);
        $form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);
    
        $changed_elements = $form['text'];
    
        unset($changed_elements['#prefix'], $changed_elements['#suffix']);
        drupal_json(array(
            'status'   => TRUE,
            'data'     => drupal_render($changed_elements),));
    }
    
    /**
     * Implement hook_menu().
     */
    function module_menu(){
      $items['module/file/callback'] = array(
        'page callback' => 'some_form_callback',
        'access callback' => TRUE,
        'file' => 'module.module',
        'type' => MENU_CALLBACK,
      );
       return $items;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多