【问题标题】:Why isn't my autocomplete.js textfield responding to input (Drupal 7)?为什么我的 autocomplete.js 文本字段不响应输入(Drupal 7)?
【发布时间】:2015-05-24 06:35:43
【问题描述】:

我正在尝试自动完成以在我的 Drupal 安装中为文本字段工作。这是一个大型项目,我还不熟悉 Drupal 和这个大型代码库。请假设我能犯最简单的错误。

好的,所以我一直在关注如何让我的文本字段自动完成的简单教程。

我有一个 hook_menu():

/**
 * Implements hook_menu().
 */
function mod_name_menu() {
  $items = array();

  // Not important for this question. This is the submit URL.
  $items['apps/name/result'] = array(
    'title' => t('Result page'),
    'file' => 'mod_name.pages.inc',
    'file path' => drupal_get_path('module', 'mod_name'),
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mod_name_course_display_form'),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );

  // This is the relevant one!
  $items['apps/name/course-codes'] = array(
    'file' => 'mod_name.pages.inc',
    'file path' => drupal_get_path('module', 'mod_name'),
    'page callback' => 'mod_name_course_code_list',
    'page arguments' => array('access content'),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );

  return $items;
}

我有一个相当大的表格可以使用,但文本字段的相关部分如下:

(mod_name.pages.inc)

function mod_name_basic_block_form($form, &$form_state) {

  [...]

  $form['search']['course_code'] = array(
    '#id' => 'course-code-textbox',
    '#type' => 'textfield',
    '#title' => t('Course code'),
    '#default_value' => (isset($_POST['course_code']) ?
      strtoupper($_POST['course_code']) :
      (isset($_GET['course_code']) ?
        $_GET['course_code'] :
        '')),
    '#required' => FALSE,
    '#size' => '20',
    '#autocomplete_path' => 'apps/name/course-codes',
  );

  [...]

  return $form;
}

[...]

/**
 * Autocomplete for the course-code form.
 */
function mod_name_course_code_list($text) {
  $results = array('1' => 'Thing 1', '2' => 'Thing 2');
  drupal_json_output($results);
}

[...]

我只是暂时将回调函数保留为静态数组,以查看自动完成的行为方式。我希望当我在文本字段中输入时,悸动者应该会跳动,然后我会看到自动完成“Thing 1”、“Thing 2”或类似的东西。但是,当我在文本字段中输入时,什么也没有发生。我确实在页面加载时看到了一个灰色的 throbber,但它在键入、模糊或单击时没有动画。

检查页面时,我看到 autocomplete.js 已加载到“网络”选项卡中。我还看到输入字段具有自动完成属性。我在 Firefox 和 Chrome 中都试过了,都没有产生任何动作。

我正在使用Drupal 7.32

任何帮助或下一步寻找线索将不胜感激。

编辑:我应该提到,当我访问应用程序/名称/课程代码时,我确实收到了 {"1":"Thing 1","2":"Thing 2"} 预期的 JSON 响应

【问题讨论】:

    标签: drupal autocomplete drupal-7


    【解决方案1】:

    我在测试环境中运行了您的代码,并通过将您的测试 JSON 调整为简单的 $results = array('Thing 1', 'Thing 2') 来实现自动完成功能

    【讨论】:

    • 谢谢特里。我发现通过从页面管理器面板中删除我的模块,它可以工作。据我了解,您的解决方案将创建它,以便自动完成中的标签和值相等,而在上面的示例中,值是键,显示的文本是值。
    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多