2012-02-13 19 views
0

私は1つのテキストフィールドのみを含むフォームを持っていますが、テキストボックス内でユーザーがenterを押すと、テキストボックスの値は送信されますが、再ページ(リフレッシュ)負荷はありません。 私はAHAHを設定するさまざまな方法を試しましたが、予想される動作を達成できず、ページがリロードされます。 私は運がなければこの問題の解決策を探しました。入力時のページの再読み込みを無効にするdrupal 6.x

それが行われるようにしている方法をアドバイスしてくださいまたは私はここで便利などこか を指示するコード:

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; 
} 

答えて

0

は、ここでそれが解決策であるガット:

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; 
} 
関連する問題