#ajax无法在ajax回调中添加的表单字段上使用

时间:2019-01-10 19:40:10

标签: ajax forms drupal-8

我已经使用Drupal 8 API创建了一个表单。单击单选按钮时,我可以使用AJAX动态添加字段。该字段具有其自己的#ajax功能,但单击该字段后将不起作用,我什至没有收到通常的“请稍候”消息。

public function buildForm(array $form, FormStateInterface $form_state) {
    ...
    $form['meeting']['existing']['replace_facilitator'] = [
        '#type' => 'container',
        '#id' => 'replace-facilitator-container',
    ];

    $form['meeting']['existing']['replace_facilitator']['options'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Are you replacing a facilitator?'),
        '#ajax' => [
            'callback' => '::replaceFacilitatorCallback',
            'wrapper' => 'facilitator-container',
            'effect' => 'fade',
        ],
    ];
    ...
}

这是返回字段的回调函数。

public function searchMeetingCallback(array &$form, FormStateInterface 
    $form_state) : AjaxResponse {

    $response = new AjaxResponse();
    $renderer = \Drupal::service('renderer');

    ...

    $response->addCommand(new ReplaceCommand('#replace-facilitator-container', 
    $renderer->renderRoot($form['meeting']['existing']['replace_facilitator'])));

    ...

    return $response;

}

在示例中,您可以看到form字段位于buildForm函数内,因此该元素已正确呈现。

我不只是返回render array元素,因为我进行了一些验证并返回了一些警报命令。

我需要重新绑定on jQuery方法吗?

0 个答案:

没有答案