Form 輸入框提供自動完成資料

1 篇文章 / 0 new
author
Form 輸入框提供自動完成資料

資料輸入框提供自動完成資訊的設計方式, 僅需下三個要點
1. 輸入框的 $form[element] 參數內需指定 #autocomplete_path 參數
$form['user_name'] = array(
    '#title' => t('Your Name'),
    '#type' => 'textfield',
    '#description' => t('Please enter your name.'),
    '#autocomplete_path' => 'autoName', //觸發的uri
);
2. 選單中建立相對應的 callback 項目
$items['autoName'] = array(//對應 自動輸入的 uri
    'page callback' => 'user_name_autocomplete', //提供資料的函式
    'type' => MENU_CALLBACK,
    'access arguments' => array('access content'),
);
3. 時作提供資料的函式, 需以 JSON 格式輸出
function user_name_autocomplete($string) {//$string為使用者當前輸入內容
    $matches = array('may','John','Joe');
    drupal_json_output(drupal_map_assoc($matches)); //傳入型態需為 key/value, 使用者選取時會帶入 key 值
}
4 若需傳入 uri 參數, 其做法如下
//選單部分
$items['hello/auto/%'] = array(//供 自動輸入用
    'page callback' => 'hello_world_autocomplete',
    'page arguments' => array(2),
    'type' => MENU_CALLBACK,
    'access arguments' => array('access content'),
);
//表單部分
$arg2 = 'Para2';
$form['name']['user_name'] = array(
    '#title' => t('Your Name'),
    '#type' => 'textfield',
    '#description' => t('Please enter your name.'),
    '#autocomplete_path' => "hello/auto/$arg2",
);
//處理部分
function hello_world_autocomplete($arg2, $string) {
    $matches = array('may','John','Joe');
    drupal_json_output(drupal_map_assoc($matches));
}
Free Web Hosting